抽象类
* 语法
* 抽象类
* abstract class 类名{}
* 抽象属性
* var|val id:Int //属性没有初始化,就是一个抽象属性
* 抽象方法
* def show //方法只有声明,没有实现,就是一个抽象方法
* 说明
* 1. 抽象方法不能直接 初始化(不能new对象)
* 2. 父类如果为抽象类,子类必须实现抽象类中的抽象属性和抽象方法
* 否则子类也必须声明为抽象类
* 3. 子类实现抽象父类的抽象属性,抽象属性 可以为 var|val
* 子类重写父类的非抽象属性,父类属性只能为val (父类定义的属性为公有属性,没必要重写)
* */
/**
* @author gaocun
* @create 2021-10-24 8:57 AM */
object 抽象类_09 {
/*
* 抽象类
* 语法
* 抽象类
* abstract class 类名{}
* 抽象属性
* var|val id:Int //属性没有初始化,就是一个抽象属性
* 抽象方法
* def show //方法只有声明,没有实现,就是一个抽象方法
* 说明
* 1. 抽象方法不能直接 初始化(不能new对象)
* 2. 父类如果为抽象类,子类必须实现抽象类中的抽象属性和抽象方法
* 否则子类也必须声明为抽象类
* 3. 子类实现抽象父类的抽象属性,抽象属性 可以为 var|val
* 子类重写父类的非抽象属性,父类属性只能为val (父类定义的属性为公有属性,没必要重写)
* */
}
package OuterAbs {
// 抽象类
abstract class AbsClass {
// 抽象属性
var id:Int
// 抽象方法
def show
println("AbsClass - 主构造器")
}
// 继承抽象类
class ZiClass extends AbsClass {
println("ZiClass - 主构造器")
// 实现抽象类的抽象属性
override var id: Int = 10
override def show: Unit = println("实现抽象类的抽象方法")
}
// 测试对象
object testAbs {
def main(args: Array[String]): Unit = {
// 抽象类不能被直接初始化
//new AbsClass();
var obj = new ZiClass();
}
}
}