次のクラスがあります:
class Super {
void foo() {
System.out.println("Super");
}
}
class Sub extends Super {
void foo() {
super.foo();
System.out.println("Sub");
}
}
public class Clazz {
public static void main(String[] args) {
new Sub().foo();
}
}
出力は次のとおりです。
素晴らしい
サブ
質問:
何がsuper
ありますか?それは親クラスのオブジェクトであり、どの子がフィールドとして保持しますか?
- もしそうなら、抽象クラスの継承はどのように機能しますか?抽象クラスのインスタンスを作成することはできません。
- そうでない場合、オーバーライドされたメソッドはどこに保持されますか?
グーグルを試してみましたが、クラスの継承方法などの共通情報しか見つかりませんでした。
アップデート:
あなたはまだ私に明白なことを言っています。たぶん私の質問は少し誤解を招くものでしたが、言い換えてみます:
- を使用してメソッドを呼び出す場合
super
、親のメソッドにアクセスしていると言います。しかし、親のオブジェクトなしでこのメソッドを呼び出すにはどうすればよいでしょうか。 super
と同じですかthis
?this
ご存知のように、は具体的なオブジェクトへの参照です。