継承と作成者


[さようなら!]
便宜上、任意の機能を受け入れると、機能と既存のシステムの関係に様々な問題が発生します.その問題を一言で要約すると複雑度の増加といえる.このレッスンでは、作成者が継承者に遭遇したときに生じる複雑さを示します.この背景には,superというキーワードの意味も重要な内容となる.
public class ConstructorDemo {
    public static void main(String[] args) {
        ConstructorDemo  c = new ConstructorDemo();
    }
}
上は間違いありません.ConstructorDemoオブジェクトの作成時にジェネレータが自動的に作成されるためです.しかし、次の例ではエラーが発生しました.
public class ConstructorDemo {
    public ConstructorDemo(int param1) {}
    public static void main(String[] args) {
        ConstructorDemo  c = new ConstructorDemo();
    }
}
パラメータ付きジェネレータがある場合、デフォルトジェネレータは自動的に作成されません.したがって、上記の例では、存在しないジェネレータを呼び出します.この問題を解決するには、次のようにデフォルトジェネレータを追加する必要があります.
public class ConstructorDemo {
    public ConstructorDemo(){}
    public ConstructorDemo(int param1) {}
    public static void main(String[] args) {
        ConstructorDemo  c = new ConstructorDemo();
    }
}
スーパーキーは親を表します.ここ()は、親の作成者を表します.これにより、親のデフォルトジェネレータが存在しなくてもエラーは発生しません.
サブクラスのジェネレータでsuperを使用する場合、superが最初に現れる必要があることに注意してください.つまり、親は子供が初期化する前に初期化することを防止する政策だと考えなければならない.
この文章は生活コードに基づくjavaチュートリアルのまとめです.