2015年11月18日 星期三

Java的覆寫與遮蔽

當子類別重新定義父類別的方法時稱之為覆寫
當子類別重新定義父類別的屬性時稱之為遮蔽

當子類別物件被轉型為父類別時
使用覆寫的方法時會呼叫子類別中定義的方法
使用遮蔽的屬性時會使用父類別中定義的屬性
但依舊可以在物件內部使用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

沒有留言:

張貼留言