Ch05 类 - 练习
1. 改进5.1节的Counter类,让它不要在Int.MaxValue是变成负数。
class Counter{ private var value = Int.MaxValue def increment() { value = if ( value < Int.MaxValue) value + 1 else value } def current = value}val myCounter = new Counter()myCounter.increment()println(myCounter.current)/*result2147483647*/class BankAccount(val balance:Double=0.0){ def deposit() {} def withdraw() {}}val obj = new BankAccount(100.00)println(obj.balance)/*result100.0*/
class Time(val hours:Int, val minutes:Int){ def before(other:Time):Boolean={ if(hours == other.hours) minutes < other.minutes else hours < other.hours }}val a = new Time(9,0)val b = new Time(9,0)val c = new Time(9,30)val d = new Time(10,0)println(a.before(b))println(a.before(c))println(a.before(d))/*resultfalsetruetrue*/ |
class Time(val hours:Int, val minutes:Int){ private val timeMinutes = hours * 60 + minutes def before(other:Time):Boolean={ timeMinutes < other.timeMinutes }}val a = new Time(9,0)val b = new Time(9,0)val c = new Time(9,30)val d = new Time(10,0)println(a.before(b))println(a.before(c))println(a.before(d))/*resultfalsetruetrue*/ public java.lang.String name(); public void name_$eq(java.lang.String);
public java.lang.String getName();
public void setName(java.lang.String);
public long id(); public void id_$eq(long);
public long getId();
public void setId(long); import scala.beans.BeanPropertyclass Student{ @BeanProperty var name: String = _ @BeanProperty var id: Long = _}val a = new Studenta.name = "Jonathan"a.id = 43344506Lprintf("%s's id is %d\n", a.name, a.id)a.setName("Frank")a.setId(43344599L)printf("%s's id is %d\n", a.getName(), a.getId())/*resultG:\share\scala>scalac e5-5.scalaG:\share\scala>javap Student.classCompiled from "e5-5.scala"public class Student { public java.lang.String name(); public void name_$eq(java.lang.String); public void setName(java.lang.String); public long id(); public void id_$eq(long); public void setId(long); public java.lang.String getName(); public long getId(); public Student();}G:\share\scala>scala e5-5.scalaJonathan's id is 43344506Frank's id is 43344599*/class Person(var age:Int){ if(age<0) age = 0}val a = new Person(-1)printf("The person's age is %d\n", a.age)/*resultThe person's age is 0*/class Person(val name:String){ val firstName = name.split(" ")(0) val lastName = name.split(" ")(1)}val a = new Person("Jonathan Chen")printf("The person's lastName is %s\n", a.lastName)printf("The person's firstName is %s\n", a.firstName)/*resultThe person's lastName is ChenThe person's firstName is Jonathan*/
class Car(val maker:String, val typeName:String, val year:Int, var id:String){ def this(maker:String, typeName:String){ this(maker, typeName, -1, "") } def this(maker:String, typeName:String, year:Int){ this(maker, typeName, year, "") } def this(maker:String, typeName:String, id:String){ this(maker, typeName, -1, id) } override def toString = "Maker:%s, TypeName:%s, Year:%d, Id:%s".format(maker, typeName, year, id)}val a = new Car("BMW","A6")val b = new Car("BMW","A6",2015,"TheOne")val c = new Car("BMW","A6",2015)val d = new Car("BMW","A6","TheOne")println(a)println(b)println(c)println(d)/*resultMaker:BMW, TypeName:A6, Year:-1, Id:Maker:BMW, TypeName:A6, Year:2015, Id:TheOneMaker:BMW, TypeName:A6, Year:2015, Id:Maker:BMW, TypeName:A6, Year:-1, Id:TheOne*/class Employee{ val name:String = "Join Q. Public" var salary:Double = 0.0}val a = new Employee/*result*/Ch05 类 - 练习的更多相关文章
- Java类的继承与多态特性-入门笔记
相信对于继承和多态的概念性我就不在怎么解释啦!不管你是.Net还是Java面向对象编程都是比不缺少一堂课~~Net如此Java亦也有同样的思想成分包含其中. 继承,多态,封装是Java面向对象的3大特 ...
- enum枚举类
枚举类可用于定义常量ch01 package edu.nf.demo.ch01; /** * * 枚举类型 */ public enum Color { /** * 红色 */ RED, /** * ...
- 《 Java 编程思想》CH05 初始化与清理
< Java 编程思想>CH05 初始化与清理 用构造器确保初始化 在 Java 中,通过提供构造器,类的设计者可确保每个对象都会得到初始化.Java 会保证初始化的进行.构造器采用与类相 ...
- 《 Java 编程思想》CH07 复用类
复用代码是 Java 众多引人注目的功能之一. Java 可以通过创建类来复用代码,要在使用类的时候不破坏现有代码,有两种方式: 组合:在新的类中使用现有类的对象. 继承:按照现有类的类型来创建新类, ...
- 《Java从入门到失业》第五章:继承与多态(5.8-5.10):多态与Object类
5.8多态 上面我们了解了向上转型,即一个对象变量可以引用本类及子类的对象实例,这种现象称为多态(polymorphism).多态究竟有什么用呢?我们先学习一个知识点. 5.8.1方法重写 前面我们学 ...
- C++ 可配置的类工厂
项目中常用到工厂模式,工厂模式可以把创建对象的具体细节封装到Create函数中,减少重复代码,增强可读和可维护性.传统的工厂实现如下: class Widget { public: virtual i ...
- Android请求网络共通类——Hi_博客 Android App 开发笔记
今天 ,来分享一下 ,一个博客App的开发过程,以前也没开发过这种类型App 的经验,求大神们轻点喷. 首先我们要创建一个Andriod 项目 因为要从网络请求数据所以我们先来一个请求网络的共通类. ...
- ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第二章:利用模型类创建视图、控制器和数据库
在这一章中,我们将直接进入项目,并且为产品和分类添加一些基本的模型类.我们将在Entity Framework的代码优先模式下,利用这些模型类创建一个数据库.我们还将学习如何在代码中创建数据库上下文类 ...
- ASP.NET Core 折腾笔记二:自己写个完整的Cache缓存类来支持.NET Core
背景: 1:.NET Core 已经没System.Web,也木有了HttpRuntime.Cache,因此,该空间下Cache也木有了. 2:.NET Core 有新的Memory Cache提供, ...
随机推荐
- Sublime Text 输入法跟随光标
通过PackageControl安装“IMESupport”,重启Sublime Text3,即可解决: 注:如项目自述,仅支持Windows.
- 隐马尔可夫模型:HMM
隐马尔可夫模型求解三大问题实例剖析 HMM 模型如图所示: 一.隐马尔可夫模型定义 隐马尔可夫模型由初始概率分布.状态转移概率分布以及观测概率分布确定. 设 Q(图中的q)是所有可能的状态的集合,V( ...
- Java多线程:多线程基础知识
一.线程安全性 定义:多个线程之间的操作无论采用何种执行时序或交替方式,都要保证不变性条件不被破坏 “共享”:变量可以由多个线程同时访问: “可变”:变量的值在其生命周期内可以发生改变 ...
- 【gulp】gulp-file-include 合并 html 文件
gulp-file-include 是 gulp 插件,它提供了一个 include 方法让我们可以像后端模板那样把公共部分的页面导入进来. 安装依赖包(包括了 gulp-file-include 和 ...
- unity3D内嵌android项目
1.从u3d中导出android工程 工程名为 HS5 2.as(AndroidStudio简写)中新建android工程 MyAndroid 3.HS5 以module方式导入到MyAndroid ...
- RxAndroid防止内存泄露
RxJava并不会自动防止这种情况发生,好在它可以很容易地防止内存泄露.Observable.subscribe()方法会返回一个Subscription对象,这个对象仅仅有两个方法:isSbscri ...
- 学习Vue 入门到实战——学习笔记
闲聊: 自从进了现在的公司,小颖就再没怎么接触vue了,最近不太忙,所以想再学习下vue,就看了看vue相关视频,顺便做个笔记嘻嘻. 视频地址:Vue 入门到实战1.Vue 入门到实战2 学习内容: ...
- 解决:Windows安装Composer及全局配置时提示部分.dll结尾的php扩展文件找不到指定的模板
当安装Composer或者全局配置时出现.dll扩展文件找不到指定模板,如下图: 解决办法: 打开php.ini,将extension_dir 改为绝对路径即可 例如:
- 3D Slicer Modify Mouse Event 修改3D Slicer中的鼠标响应事件
在3D Slicer中,我们如果想在自己写的插件中来修改默认的鼠标响应事件的话,就需要先将原有的响应事件链接删除,然后建立自定义的响应事件链接,然后将自己要实现的功能写在响应事件函数中. 比如Slic ...
- 求问ps如何导出单个切片及PS导出所有的切片图像
在ps里面对图片进行切片,并根据需要弄好切片,利用shift键,可以选择其中部分的切片: 弄好以后,点击“文件”,选择“存储为WEB和设备所用格式”:. 在打开的“存储为WEB和设备所用格式”界面上点 ...