抽象类

25 阅读1分钟
/*
* 抽象类 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() 
} 
}