抽象类重写
// 3.一个抽象类中可以有:
具体属性 val name:String = "小米"
具体方法 def autoRun ():Unit = {}
抽象属性:val name:String 没有具体值的属性。只有属性名和类型。它必须写在抽象类中
抽象方法:def autoRun ():Unit
在子类中,要有具体的实现。
// 抽象类 abstract
// 1. 一个抽象类(加了abstract修饰的),不能被new。
// 一个类不能被用来创建对象,那么这个类具体有什么用呢? 就是人的父类!
// 2. 可以定义抽象方法,在子类中去实习
// 3.一个抽象类中可以有:
//具体属性 val name:String = "小米"
//具体方法 def autoRun ():Unit = {}
//抽象属性:val name:String 没有具体值的属性。只有属性名和类型。它必须写在抽象类中
//抽象方法:def autoRun ():Unit
//在子类中,要有具体的实现。
object class009 {
abstract class AICar() {
// 1. 具体属性
var name: String = "car"
val color: String = "black"
// 2. 具体方法
def run(): Unit ={
println("AICar run......")
}
// 3. 抽象属性,没有属性值
var price: Double
// 4. 抽象方法,没有方法体
def autoRun(): Unit
}
class XiaoMi extends AICar{
// 重写
// 1. 具体属性
name = "小米" // 对于var的属性,直接覆盖
override val color = "流光紫" // 对于val的属性,要添加override
// 2. 具体方法
override def run(): Unit = {
println("小米 run.....")
}
// 实现
// 3. 实现 抽象属性
var price = 28.8
// 4. 实现 抽象方法
def autoRun():Unit = { println("小米自动驾驶 *") }
}
def main(args: Array[String]): Unit = {
var c1 = new XiaoMi()
c1.autoRun()
c1.run()
println(c1.name)
println(c1.color)
}
}