-2
子クラスで親クラスインスタンス変数の値を変更する方法を教えてください。子クラスでsuperVariableの名前を使用してみましたが、変数名私は変更が親変数に反映されていないことがわかります子クラスで親クラスのインスタンス変数の値を変更する方法
子クラスで親クラスインスタンス変数の値を変更する方法を教えてください。子クラスでsuperVariableの名前を使用してみましたが、変数名私は変更が親変数に反映されていないことがわかります子クラスで親クラスのインスタンス変数の値を変更する方法
親変数をparent.variable
で更新することは、OOPで間違った考えです。親クラスを拡張すると、子クラスが親クラスと同じようになったように見えますが、それはもはや分離されていないので、変数は今から子供のものだと思います。しかし、スライスの違いは、クラスの各項目の可視性を設定するpublic
private
の定義です。したがって、以下のサンプルでは、親のプライベート変数を定義したので、子はそれを見ることができませんが、子はパブリック・ゲッター・セッターを介して変数を更新できます。これは、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'
}
}
コードを表示できますか? – Jeet
私はあなたがstackoverflowの代わりにJavaの本を使うべきだと思います... – Jay
子は親から(公共および保護された)変数を既に継承していますので、this.variableを使ってアクセスして変更することができます。 HelloWorldの は{//引数)(このエディタ パブリック静的無効メイン(文字列[] args){ 親P =新しい親の下にテキストフィールドを使用して渡され – Raptor