35_面向对象_抽象类

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

}

 

上一篇:程序员很卷,但依然是版本之子!


下一篇:杨辉三角的简单实现(C++)