黑猴子的家: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
}

尖叫提示:val是可以重写没有参数的函数,等号右边直接写方法体就行,函数也是一个对象,是对象就能赋值给一个变量,这样理解就可以了,这也就是为什么 val f1 = () => 1+2 是可以的,那这是一个方法还是一个变量呢?你看f1的字体 变紫+斜体,它就是一个变量,一个值,到这个阶段了,我可以告诉你世界的真相了,方法名其实本身就是一个变量,你可以这样理解的,总之是很灵活的,面向函数式编程

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值