Javaの便利な機能は、メンバメソッドをfinalとして宣言し、子孫クラスでオーバーライドできないようにするオプションです。メンバー変数に似たものがありますか?Java:メンバー変数のオーバーライドを防止する
class Parent {
public final void thisMethodMustRemainAsItIs() { /* ... */ }
public String thisVariableMustNotBeHidden;
}
class Child extends Parent {
public final void thisMethodMustRemainAsItIs() { /* ... */ } // Causes an error
public String thisVariableMustNotBeHidden; // Causes no error!
}
EDIT:申し訳ありませんが、私はシナリオにもっと詳しく説明する必要があります私は子クラス(したがって、それはプライベートであってはならない)によって更新されなければならない親クラス内の変数を、持っています。子クラスに同じ名前の変数を作成する場合は、それはそれは、自身のコピーを更新していても、それは親の変数を更新したと思います。
class Parent {
protected String myDatabase = null; // Should be updated by children
public void doSomethingWithMyDatabase() { /* ... */ }
}
class GoodChild extends Parent {
public GoodChild() {
myDatabase = "123";
doSomethingWithMyDatabase();
}
}
class BadChild extends Parent {
protected String myDatabase = null; // Hides the parent variable!
public BadChild() {
myDatabase = "123"; // Updates the child and not the parent!
doSomethingWithMyDatabase(); // NullPointerException
}
}
これは私がないようにしたいものです。
それを維持しますか? – soulcheck