抽象类
* 语法
* 抽象类
* 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(); } } }