scala语法总结——abstract抽象类

scala中可以用abstract来定义一个抽象类,抽象类不可以被创建对象,只可以被继承
下面总结几个关键点:

  1. 如果抽象类中的属性没有赋值,那么子类中一定要重写父类中的属性,如果父类中的属性时val定义的,那么子类中重写的属性必须要加override关键字,如果是var定义的可以不用加override(推荐都加上override)
  2. 如果抽象类中的方法没有方法体,那说明该方法时抽象方法,被子类继承时需要重写所有的抽象方法,可以不用加override(推荐都加上),如果子类想要重写父类中的普通方法,那么必须要加上override关键字
  3. 注意,无论父类是抽象类还是普通类,使用 override 时不允许重写父类中的变量(var),运行时会报异常
//首先定义一个抽象类Pet
abstract class Pet {
  val name:String = ""
  val gender:String
  def eat()={
    println("宠物吃饭")
  }
  def play()
}

//再定义个Cat用来继承Pet
class Cat extends Pet {

  override def eat(): Unit = super.eat()
  def play(): Unit = {println("小猫玩球")}

  //val定义的属性,被重写必须要写override
  override var name: String = ""
  override val gender: String = ""
}

当父类中的变量var被子类重写时,运行时会报错

abstract class Parent(var name:String){
 var age:Int=0
 //省略方法声明
}
//运行错误
class Child(override var name:String,override var age:Int) extends Parent(name)

正确写法:将var换成val

class Parent(val name:String){
 val age:Int=0
//省略方法定义
}
class Child(override val name:String,override val age:Int) extends Parent(name)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值