abstractclass Car{val carBrand:String//字段没有初始化值,就是一个抽象字段def info()//抽象方法def greeting(){
println("Welcome to my Car!")}}class BMWCar extends Car{overrideval carBrand:String="BMW"def info(){
printf("This is a %s car.It is expensive.\n",carBrand)}overridedef greeting(){
println("Welcome to my BMW Car!")}}class BYDCar extends Car{overrideval carBrand:String="BYD"def info(){
printf("This is a %s car.It is cheap.\n",carBrand)}overridedef greeting(){
println("Welcome to my BYD Car!")}}object MyCar{def main(args:Array[String]){val myCar1=new BMWCar()val myCar2=new BYDCar()
myCar1.greeting()
myCar1.info()
myCar2.greeting()
myCar2.info()}}
继承抽象类定义抽象类需要使用关键字abstract定义抽象类的抽象方法不需要使用关键字abstract抽象类中定义的字段没给初值就是抽象字段,必须给出类型声明子类重载父类的抽象成员,override可选;重载父类的非抽象成员,override必须加只能重载val类型字段,不能重载var类型字段abstract class Car{ val carBrand:String//字段没有初始化值,就是一个抽象字段 def info()//抽象方法 def greeting