staticメソッドをオーバーライドすると。。。
またまた基本的な事をメモ。。
オーバーライドしたメソッドはサブクラスメソッドが呼び出されます。
Animals animals = new Cow;
animals.Say(); //サブクラスのメッソッド呼び出し
しかしSayメソッドがstatic宣言されていた場合には最初にスーパークラス型で
宣言しているためスーパークラスのstaticメソッドが呼び出されます。
class Animals {
public static void Say() { //static宣言
System.out.println("Animal");
}
}
class Cow extends Animals {
public static void Say() { //static宣言をオーバーライド
System.out.println("Cow");
}
}
public class Test05 {
public static void main(String args) {
Animals[] animals = { new Animals(), new Cow() };
for (Animals a : animals) {
a.Say();
}
new Cow().Say(); //サブクラス型で呼び出すとサブクラスのstaticメソッドが呼び出されます。
}
実行結果
Animal
Animal
Cow
レッツ覚え書き。