2017-02-16 13 views
-2

子クラスで親クラスインスタンス変数の値を変更する方法を教えてください。子クラスでsuperVariableの名前を使用してみましたが、変数名私は変更が親変数に反映されていないことがわかります子クラスで親クラスのインスタンス変数の値を変更する方法

+1

コードを表示できますか? – Jeet

+0

私はあなたがstackoverflowの代わりにJavaの本を使うべきだと思います... – Jay

+0

子は親から(公共および保護された)変数を既に継承していますので、this.variableを使ってアクセスして変更することができます。 HelloWorldの は{//引数)(このエディタ パブリック静的無効メイン(文字列[] args){ 親P =新しい親の下にテキストフィールドを使用して渡され – Raptor

答えて

1

親変数をparent.variableで更新することは、OOPで間違った考えです。親クラスを拡張すると、子クラスが親クラスと同じようになったように見えますが、それはもはや分離されていないので、変数は今から子供のものだと思います。しかし、スライスの違いは、クラスの各項目の可視性を設定するpublicprivateの定義です。したがって、以下のサンプルでは、​​親のプライベート変数を定義したので、子はそれを見ることができませんが、子はパブリック・ゲッター・セッターを介して変数を更新できます。これは、getterとsetterを使用して、Parentクラスにのみ関連するため、カプセル化を提供するためです。詳しくはコードを調べてください:

class Main { 

    public static class Parent { 
     private int variable; 

     public int getVariable() { 
      return variable; 
     } 

     public void setVariable(int variable) { 
      this.variable = variable; 
     } 
    } 

    public static class Child extends Parent { 

     private int childVadiable; 

     public Child() { 

     } 

     public int getChildVadiable() { 
      return childVadiable; 
     } 

     public void setChildVadiable(int childVadiable) { 
      this.childVadiable = childVadiable; 
     } 

     public void updateParentVariable(int value) { 
      this.setVariable(value); 
     } 

    } 

    public static void main (String[] args) { 

     Child child = new Child(); 
     child.updateParentVariable(5); 
     System.out.println(child.getVariable()); 
     //Result it '5' 
    } 

} 
関連する問題