博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第五章 类
阅读量:7113 次
发布时间:2019-06-28

本文共 1840 字,大约阅读时间需要 6 分钟。

hot3.png

1、改进5.1节的Counter类,让它不要在Int.MaxValue时变成负数

class Counter{    private var value=0    /*对于改值器的方法(即改变对象状态的方法),使用()*/    def increment(){      if(value

2、编写一个BankAccount类,加入deposit和withdraw方法,和一个只读的balance属性

class BankAccount{    val  balance=0.0    def deposit()={}    def withdraw()={}  }

 3、编写一个Time类,加入只读属性hours和minutes,和一个检查某一时刻是否早于另一时刻的方法before(other:Time):Boolean。Time对象应该以new Time(hrs,min)方式构建。其中hrs小时数以军用时间格式呈现(介于0和23之间) 

class Time(val hours: Int,val minutes:Int){    def before(other:Time):Boolean={hours

4、重新实现前一个类中的Time类,将内部呈现改成午夜起的分钟数(介于0到24*60-1之间)。不要改变公有接口。也就是说,客户端代码不应因你的修改而受影响

class Time4(val hours:Int,val minutes:Int){    def currenttime=(hours*60+minutes)    def before(other:Time4):Boolean={currenttime

5、 创建一个Student类,加入可读写的JavaBeans属性name(类型为String)和id(类型为Long)。有哪些方法被生产?(用javap查看。)你可以在Scala中调用JavaBeans的getter和setter方法吗?应该这样做吗? 

class Student(@BeanProperty var name :String,@BeanProperty var id :Long){   // @BeanProperty var name :String=_    //@BeanProperty var id :Long=_  }

6、 在5.2节的Person类中提供一个主构造器,将负年龄转换为0

class Person(var age:Int){    if(age<0) age=0  }

 7、编写一个Person类,其主构造器接受一个字符串,该字符串包含名字,空格和姓,如new Person("Fred Smith")。提供只读属性firstName和lastName。主构造器参数应该是var,val还是普通参数?为什么?

应该是val 要求只读属性,即有getter没有setter,val可以满足

8、创建一个Car类,以只读属性对应制造商,型号名称,型号年份以及一个可读写的属性用于车牌。提供四组构造器。每个构造器fc都要求制造商和型号为必填。型号年份和车牌可选,如果未填,则型号年份为-1,车牌为空串。你会选择哪一个作为你的主构造器?为什么? 

//选择四个参数都有的做为主构造器,型号年份和车牌号有缺省值,这样可以满足制造商和型号名称必填、型号年份和车牌可选的需求,并且可以避免过多的使用辅助构造器  class Car(val maker:String,val modelname:String,val modelyear:Int= -1,var carlicense:String=""){  }

9、在Java,C#或C++重做前一个练习。Scala相比之下精简多少?

10、 考虑如下的类 

      class Employ(val name:String,var salary:Double){ 
          def this(){this("John Q. Public",0.0)} 
      } 
            重写该类,使用显示的字段定义,和一个缺省主构造器。你更倾向于使用哪种形式?为什么?

class Employ{    val name="John Q. Public"    val salary=0.0  }

 

转载于:https://my.oschina.net/xiaoluobutou/blog/692619

你可能感兴趣的文章
http 415 错误
查看>>
RSA算法
查看>>
转 Cocos2d-x3.0模版容器详解之一:cocos2d::Vector<T>
查看>>
UIView相关方法
查看>>
[J2ME Q&A]真机报告MontyThread -n的错误之解释
查看>>
算法——分支限界法
查看>>
蓝桥杯 历届试题 九宫重排
查看>>
java 中的 instanceof
查看>>
泛函编程(22)-泛函数据类型-Monoid In Action
查看>>
iOS开发之网络编程--中文转码
查看>>
【原】设计稿中字体pt与px之间的转化
查看>>
How to make a not-so-boring speech?
查看>>
Pillow实现图片对比
查看>>
Centos上安装 OpenNebula Management Console
查看>>
【Oracle】 RAC 环境删除oracle 之一
查看>>
android 通过重写ScrollView和Listview完成上下滑动选中不同位置标题的效果
查看>>
[华为机试练习题]34.识别有效的IP地址和掩码并进行分类统计
查看>>
简单选择排序
查看>>
SQL应用与开发:(四)视图的应用
查看>>
dbcp重连失败问题排查记录(timeout设置)
查看>>