「Java」「access level modifier修飾子」 Chapter3 Question5

Given:
public class Test4 {
 public static void main(String[] args) {
  Cat[] cats = {new Cat(),new Lion()};
  for(Cat c: cats) {
   System.out.println(c.bark());
  }
 }
}

class Cat {
 //private String bark() {
 //造成System.out.println(c.bark());無法呼叫到此物件方法
 
 //String bark() {
 //Lion的String bark物件方法修飾子: default,protected,public
 
 //protected String bark() {
 //Lion的STring bark物件方法修飾子: protected public
 
 public String bark() {
 //Lion的STring bark物件方法修飾子: public
  return "Meow";
 }
}

class Lion extends Cat {
 public String bark() {
  return "Growl";
 }
}

Answer:
Meow
Growl

------------------------------------------------------------------

要覆寫繼承的物件方法:
子類別的修飾子不可小於父類別,或相同修飾子。
也就是父類別的修飾子永遠是比子類別更高,或相同修飾子。
另外一種講法:
父類別就是最高機密,子類別的機密比父類別低或相同權限,並以此推類。

另外,假如方法修飾子是private ,將無法被呼叫到

留言

這個網誌中的熱門文章

[Excel]國曆轉農曆VBA

「CSS」「div區塊介紹」 三欄式網頁排版設計

「生活」眉毛觀人