黑猴子的家(Scala|黑猴子的家:Scala 重写字段)
子类改写父类或者抽象父类的字段,通过以下方式
class Person1(val name:String,var age:Int){
println("主构造器已经被调用")
val school="五道口职业技术学院"
def sleep="8 hours"
override def toString="我的学校是:" + school + "我的名字和年龄是:" + name + "," + age
}class Person2(name:String, age:Int) extends Person1(name, age){
override val school: String = "清华大学"
}
尖叫提示:
(1)def只能重写另一个def
(2)val只能重写另一个val或不带参数的def (只是告诉你行,尽量别这么做,没有什么意义)
(3)var只能重写另一个抽象的var
(4)使用override 关键,是非常规范的,如果去掉,在语法上是没有错,但是你乍看,你不知道是自己的,还是重写的
什么是抽象 var?
abstract class Person3 {
var name:String
}
重写字段
class Fathera {
def a = 10
val b = 10
}
//Ctrl + o
class Dog extends Fathera{
//override def a = 10
override val a = 10
override val b = 20
}
【黑猴子的家(Scala|黑猴子的家:Scala 重写字段)】
尖叫提示:val是可以重写没有参数的函数,等号右边直接写方法体就行,函数也是一个对象,是对象就能赋值给一个变量,这样理解就可以了,这也就是为什么 val f1 = () => 1+2 是可以的,那这是一个方法还是一个变量呢?你看f1的字体 变紫+斜体,它就是一个变量,一个值,到这个阶段了,我可以告诉你世界的真相了,方法名其实本身就是一个变量,你可以这样理解的,总之是很灵活的,面向函数式编程
推荐阅读
- 热闹中的孤独
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- 放屁有这三个特征的,请注意啦!这说明你的身体毒素太多
- 一个人的旅行,三亚
- 布丽吉特,人生绝对的赢家
- 慢慢的美丽
- 尽力
- 一个小故事,我的思考。
- 家乡的那条小河
- 《真与假的困惑》???|《真与假的困惑》??? ——致良知是一种伟大的力量