/*
* 抽象类 abstract
* 1.一个抽象类(加了abstract修饰的),不能被new
* 一个类不能用来创建对象,只能用来做父类
*
* 2.可以定义抽象方法,在子类中去实现
*
* 3.一个抽象类中可以有:
* 1.具体属性 val name:String = "小米"
* 2.具体方法:def autoRun():Unit = {}
* 3.抽象属性:val name:String 没有具体值的属性。只有属性名和类型。他必须写在抽象类中
* 4.抽象方法:def autoRun():Unit
* 在子类中,要有具体的实现
*
* */
abstract class AICar {
//1.具体属性
var name: String = "car"
var color: String = "black"
//2.具体方法 def run(): Unit = { println("run......") }
//3.抽象属性(没有属性值) var price: Double
// 修正拼写错误:prcie -> price
//4.抽象方法(没有方法体)
def autoRun(): Unit } class XiaoMi extends AICar {
//重写具体属性 name = "小米"
//override val color = "流光紫"
// 父类是var,子类重写也需保持var
//重写具体方法 override def run(): Unit = {
println("小米 run.....") }
//实现抽象属性 var price: Double = 28.8
// 明确类型,实现抽象属性
//实现抽象方法 override def autoRun(): Unit = {
println("小米驾驶")
}
}
object Class14 {
def main(args: Array[String]): Unit = {
// 测试子类实例 val miCar = new XiaoMi()
println(s"名称:${miCar.name},颜色:${miCar.color},
价格:${miCar.price}万") miCar.run() miCar.autoRun()
}
}