nabstract class ClassDemo { //定义抽象字段 val name: String //定义具体字段 //val age:Int=20 var age: Int = 10 //抽象字段不能使用private修饰,因为抽象字段本身就是需要子类去实现。 //如果添加private关键字修饰后,意味着子类不能访问,也就意味着不能实现该字段,那么会报错。 // private val tel:String //定义抽象方法,没有具体的方法体实现,称为抽象方法 //抽象方法必须在抽象类中 def sayHello(content: String) //也可以定义具体的方法 def say(): Unit = { println("good idea!") } } class ClassDemo_01 extends ClassDemo { //子类实现父类的抽象字段,可以不使用override,这个字段既可以用val修饰,也可以用var修饰 override val name: String = "李四" //子类重写父类的非抽象字段,那么这个非抽象字段不能用var修饰,否则异常 //override var age: Int = 20 //子类实现父类的抽象方法,可以不使用override override def sayHello(content: String): Unit = { println(content) } //子类重写父类的非抽象方法,必须要添加override关键字 //如果需要指明调用父类的这个方法,需要使用super.say()方法 override def say(): Unit = super.say() } object ClassDemo_01_01 { def main(args: Array[String]): Unit = { val test = new ClassDemo_01 println(test.name) test.sayHello("你好!") test.say() } }
Scala继承的特点
最新推荐文章于 2023-02-13 22:40:00 发布