面接問題--多態

5358 ワード

子クラス継承親(静的メソッドと非静的メソッドがそれぞれ静的変数と非静的変数を出力し、子クラスが2つの変数に値を再割り当て、メソッドが移動せずに配置される)は、ダウンシフトを使用してオブジェクトを作成します.このオブジェクトは、2つの変数とメソッドがそれぞれ何を出力するかを直接取得します.
多態は対象に向かう第三の特性であり,現実世界における同一事物の異なる形態に対応する.例えば、スーツもTシャツもジャケットも「服」と受け継がれ、いずれも服の一種である.
マルチステートの3つの条件:1サブクラス継承親2サブクラス書き換え親メソッド3アップシフト
説明したクラス図は次のとおりです.
public class Person {
    String str = "A";
    static String staticStr = "staticA";

    void method() {
        System.out.println(str);
    }
    static void staticMethod() {
        System.out.println(staticStr);
    }
}

public class Son extends Person {
    String str = "B";
    static String staticStr = "staticB";

    void method() {
        System.out.println(str);
    }
    static void staticMethod() {
        System.out.println(staticStr);
    }
}
//           
Person p = new Son();
System.out.println(p.str);
p.method();
System.out.println(p.staticStr);
p.staticMethod();

出力:A B staticA staticA
解析:子オブジェクトは親変数に割り当てられ、外部には親の属性と方法が表示されます.しかし、一部の方法は布団類を書き換えた後、サブクラスの方法を呼び出し、継承した属性は、同様に書き換えることができる.親変数を使用してメソッドを呼び出す場合、子が書き換えられていない場合、呼び出されるのは親メソッドであり、返されるのはもちろん親のプロパティです.サブクラスがメソッドを書き換えると,呼び出されるのはサブクラスのメソッドであり,返されるのは当然サブクラスの属性である.ただし、静的メソッドと属性の場合は別ですが、静的メソッドと属性はクラスに属し、クラスに属していないオブジェクトであり、親を使用する変数は親を使用するクラスであり、具体的にどのオブジェクトであるかは関係ありません.