私はjavaを初めて使用しています。最近、私はこれに似たいくつかのコードを見た:サブクラスのインスタンスを作成するときに継承されたメンバーにアクセスする際の "this"と "super"の相違点
class A {
protected int myInt;
public static void main(String[] args) {
B b = new B();
b.myFunction();
}
}
class B extends A {
public void myFunction() {
this.myInt = 10;
}
}
私の知る限りでは、その親のインスタンスが同様に作成されます。基本クラスのすべての保護されたメンバーとパブリックメンバーは、サブクラスからアクセスできます。 myInt
を無効にすると、this.myInt
〜super.myInt
の間に違いがあります。それぞれのクラスには独自のmyInt
(Bは両方にアクセス権があるため)があるためです。
私の質問は、myInt
を上書きしないと、どの形式が好ましいかthis.myInt
またはsuper.myInt
?
フィールドをオーバーライドしません。また、 'B'も' A'ですが、インスタンスは2つではなく1つだけ作成されます。 –
可能な複製http://stackoverflow.com/questions/4023344/difference-between-this-andsuper-keywords-in-java –
@ElliottFrischによるコメントの明確化: 'B'に' myInt'も宣言すれば、 *フィールドをオーバーライドしない*あなたは 'A 'に同じ名前のフィールドを隠しています。 [Java™チュートリアル - フィールドの非表示](https://docs.oracle.com/javase/tutorial/java/IandI/hidevariables.html)を参照してください。 – Andreas