Kotlinクラス2-抽象クラスとインタフェース

1584 ワード

Kotlinクラス2-抽象クラスとインタフェース
1.Kotlinクラス、抽象クラス、インタフェースのルール:
  • 「単一継承マルチリアリティ」すなわち、1つのクラスは1つの親クラスしか継承できないが、複数のインタフェースを実現することができる.
  • 「継承実装後使用」抽象クラスとインタフェースは直接オブジェクトを作成することができず、布団クラス継承実装後、サブクラスで作成する必要がある.
  • 親(インタフェース)変数は、子(実装クラス)のインスタンス付与を受け入れることができる.

  • 2.インタフェース
  • Kotlinでは、インタフェースは以下の特徴を有する:
  • インタフェースでは属性を定義できますが、初期化できません.getter/setterメソッドもありませんが、その実装クラスでは実装する必要があります.
  • は、インタフェース関数にデフォルトの実装を作成することができる(その実装クラスでは、関数を実装する必要はない).
  • 抽象関数については、その実装クラスにその関数の実装を与えなければならない.
  • interface A {
    
        /* 1.          ,       ,     getter/setter   ,              ;
         */
        var a: Int
    
        /* 2.              (                );
         */
        fun printA() {
            println("a --> $a")
        }
    
        /* 3.       ,                 ;
         */
        fun printA1()
    }
    
    /* A1.   A                      a;
     */
    class implA(override var a: Int) : A {
    
        /* A3.   A                   printA1();
         */
        override fun printA1() {
        }
    }
    

    3.抽象クラス
  • Kotlinでは、抽象クラスは以下の特徴を有する:
  • は属性を定義することができ、同時に属性は初期値を付与することができる.
  • は、関数および関数体を作成してもよいし、クラスに対応する属性を出力してもよい.
  • インタフェースと同様に、抽象的な関数については、その関数の実装を実現クラスに与えなければならない.
  • abstract class B {
    
        /* 1.       ,           ;
         */
        var b = 10
    
        /* 2.            ,            ;
         */
        fun printB() {
            println(b)
        }
    
        /* 3.      ,       ,                ;
         */
        abstract fun printB1()
    }
    
    class implB : B() {
    
        /* B3.    B                  printB1();
         */
        override fun printB1() {
        }
    
    }