私はfield hiding
Javaで呼ばれる概念を知っています。しかし、それでも、インスタンス変数がオーバーライドされていないことに関連して混乱が生じています。
私の現在の知識によると、スーパークラスのメソッドをオーバーライドするということは、スーパークラスのメソッドがサブクラスで使用可能であっても、JVMがサブクラスのオーバーライドされたメソッドを呼び出すことを意味します。
field hiding
そして、私はリンクを介して同様のことを読みました:-フィールドを隠す
したがって、いずれの場合も、サブクラスで継承されたインスタンス変数の値を変更すると、インスタンスが過剰に削除されます。
私は混乱しています助けてください。
私は次のスーパークラスを使用しています:-
public class Animal{
File picture;
String food;
int hunger;
int width, height;
int xcoord, ycoord;
public void makeNoise(){
.........
}
public void eat(){
.............
}
public void sleep(){
..........
}
public void roam(){
.............
}
}
Tiger、cat、dog、hippoなどのサブクラスがあります。サブクラスは、makeNoise()、eat、roam()メソッドをオーバーライドします。
ただし、各サブクラスは、インスタンス変数に異なる値のセットも使用します。
混乱しているように、私はスーパークラスのAnimalのすべてのインスタンス変数と3つのメソッドをオーバーライドしています。super
そして、キーワードを使用してサブクラスで使用できるスーパークラスのインスタンス変数がまだあります。