Java:子クラスは親クラスの属性値を書き換えることができますか?


Java:子クラスは親クラスの属性値を書き換えることができますか?
      まず、出力結果を推測できる例を見てみましょう.
1.  
public class FatherClass {
	
	String info="FatherClass";
}

2.  
public class SonClass extends FatherClass{
	
	String info="SonClass";
}

3.    
public static void main(String[] args) {
	FatherClass father=new FatherClass();
	System.out.println(father.info);
		
	SonClass son=new SonClass();
	System.out.println(son.info);
		
	FatherClass son2=new SonClass();
	System.out.println(son2.info);
}

      上記コードの出力結果は次のとおりです.
FatherClass
SonClass
FatherClass

      不思議なことに、私たちは確かに2つのSubオブジェクトを作成しましたが、2番目の出力の結果はSuperです.これは、上記の例では非表示フィールドが定義されているためです.
    ,                     ,         。

      上記の定義から、メンバーフィールドがメソッドのように書き換えられないことがわかります.サブクラスが同じ名前のフィールドを定義すると、サブクラスは新しいフィールドのみを宣言します.スーパークラスのフィールドは非表示です.書き換えられていないので、マルチステートアクセスはできません.
      注:子クラスでは、親クラスのフィールドは単純な名前で参照できません.代わりに、このフィールドは親からアクセスする必要があります.一般的には、コードが読みにくいため、フィールドを非表示にすることはお勧めしません.
参照先:
  • https://mp.weixin.qq.com/s/Ovqb_F2vABeYWrfKCGE4-g