當子類別重新定義父類別的屬性時稱之為遮蔽
當子類別物件被轉型為父類別時
使用覆寫的方法時會呼叫子類別中定義的方法
使用遮蔽的屬性時會使用父類別中定義的屬性
但依舊可以在物件內部使用super來使用父類別定義的方法與屬性
package learning.test;
public class overloadtest {
public static void main(String[] args) {
Banana mybanana = new Banana();
System.out.println(mybanana.name);
System.out.println(mybanana.getName());
System.out.println(((Banana) mybanana).name);
System.out.println(((Banana) mybanana).getName());
System.out.println(((MyFruit) mybanana).name);
System.out.println(((MyFruit) mybanana).getName());
}
}
class MyFruit {
String name = "Fruit";
String getName() {
return name;
}
}
class Banana extends MyFruit {
String name = "Banana";
String getName() {
return name;
}
}
輸出:在程式第10行中將物件轉型為MyFruit型態,其name屬性輸出為Fruit。
在程式第11行中將物件轉型為MyFruit型態,但其getName()方法輸出為Banana。
Banana Banana Banana Banana Fruit Banana
沒有留言:
張貼留言