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)
/*result
2147483647
*/
class
BankAccount(
val
balance
:
Double
=
0.0
){
def
deposit() {}
def
withdraw() {}
}
val
obj
=
new
BankAccount(
100.00
)
println(obj.balance)
/*result
100.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)) /*result false true true */ |
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))
/*result
false
true
true
*/
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.BeanProperty
class
Student{
@
BeanProperty
var
name
:
String
=
_
@
BeanProperty
var
id
:
Long
=
_
}
val
a
=
new
Student
a.name
=
"Jonathan"
a.id
=
43344506
L
printf(
"%s's id is %d\n"
, a.name, a.id)
a.setName(
"Frank"
)
a.setId(
43344599
L)
printf(
"%s's id is %d\n"
, a.getName(), a.getId())
/*result
G:\share\scala>scalac e5-5.scala
G:\share\scala>javap Student.class
Compiled 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.scala
Jonathan's id is 43344506
Frank'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)
/*result
The 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)
/*result
The person's lastName is Chen
The 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)
/*result
Maker:BMW, TypeName:A6, Year:-1, Id:
Maker:BMW, TypeName:A6, Year:2015, Id:TheOne
Maker: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提供, ...
随机推荐
- [HDFS Manual] CH4 HDFS High Availability Using the Quorum Journal Manager
HDFS High Availability Using the Quorum Journal Manager HDFS High Availability Using the Quorum Jour ...
- IOS-电话拦截
IOS10的电话拦截理念与android不一样,基于隐私保护的理念IOS没把对方号码送给应用,因此需要反过来由app把需要识别或拦截的电话存入系统数据库.这一功能通过Call Directory Ex ...
- UE4/Unity3d 根据元数据自动生成与更新UI
大家可能发现一些大佬讲UE4,首先都会讲类型系统,知道UE4会根据宏标记生成一些特定的内容,UE4几乎所有高级功能都离不开这些内容,一般来说,我们不会直接去使用它. 今天这个Demo内容希望能加深大家 ...
- 集合的最大缺点是无法进行类型判定(这个缺点在JAVA1.5中已经解决),这样就可能出现因为类型不同而出现类型错误。
集合的最大缺点是无法进行类型判定(这个缺点在JAVA1.5中已经解决),这样就可能出现因为类型不同而出现类型错误. 解决的方法是添加类型的判断. LinkedList接口(在代码的使用过程中 ...
- Linux 文件特殊权限_013
***Linux 系统文件除了9位基本权限,还有额外3位特殊权限,分别是SUID(setuid),SGID(setgid),SBIT(sticky bit) 一.Linux 系统文件3位特殊权限位说明 ...
- Linux 文件属性及权限_007
Linux一切皆文件: Llinux系统的文件或目录的属性主要包括:索引节点.文件类型.文件权限.链接数.所属的用户和用户组.最近修改时间等. Llinux文件属性及权限图形说明: Linux文件属性 ...
- ubuntu14.04安装MATLAB R2017b步骤详解
转载:https://blog.csdn.net/qq_32892383/article/details/79670871 1. 前言最近由于项目原因,需要在ubuntu上安装MATLAB,在网上找了 ...
- 蜕变成蝶~Linux设备驱动中的阻塞和非阻塞I/O
今天意外收到一个消息,真是惊呆我了,博客轩给我发了信息,说是俺的博客文章有特色可以出本书,,这简直让我受宠若惊,俺只是个大三的技术宅,写的博客也是自己所学的一些见解和在网上看到我一些博文以及帖子里综合 ...
- Excel数据与DateTable数据的转换
public class ExcelHelper : IDisposable { private string fileName = null; //文件名 private IWorkbook wor ...
- sql知识点记录
order by就是排序. group by就是分组. WHERE语句在GROUP BY语句之前:SQL会在分组之前计算WHERE语句. HAVING语句在GROUP BY语句之后:SQL会在分 ...