Java繼承2

一、爲何使用繼承this

從已有的類派生出新的類,稱爲繼承。spa

在不一樣的類中也可能會有共同的特徵和動做,能夠把這些共同的特徵和動做放在一個類中,讓其它類共享。對象

所以能夠定義一個通用類,而後將其擴展爲其它多個特定類,這些特定類繼承通用類中的特徵和動做。繼承

繼承是 Java 中實現軟件重用的重要手段,避免重複,易於維護,易於理解。ci

二、父類和子類編譯器

若是類 B 從類 A 派生,或者說類 B 擴展自類 A,或者說類 B 繼承類 A,編譯

 

則稱類 A 爲"父類",也稱爲超類、基類;class

 

稱類 B 爲"子類",也稱爲次類、擴展類、派生類。變量

子類從它的父類中繼承可訪問的數據域和方法,也能夠添加新的數據域和新的方法。擴展

定義繼承的語法:

修飾符 class 子類名 extends 父類名

例如:Shape 類是父類,其子類能夠有 Circle 類、Rectangle 類、Triangle 類,等等。

繼承的注意點:

  •  子類不是父類的子集,子類通常比父類包含更多的數據域和方法。
  • 父類中的 private 數據域在子類中是不可見的,所以在子類中不能直接使用它們。
  • 繼承是爲"是一個"的關係建模的,父類和其子類間必須存在"是一個"的關係,不然不能用繼承。
    但也並非全部"是一個"的關係都應該用繼承。例如,正方形是一個矩形,但不能讓 Square 類來繼承 Rectangle 類,由於正方形不能從矩形擴展獲得任何東西。正確的繼承關係是 Square 類繼承 Shape 類
  • Java 只容許單一繼承(即一個子類只能有一個直接父類),C++ 能夠多繼承(即一個子類有多個直接父類)。

三、super 關鍵字

super 表示使用它的類的父類。super 可用於:

  • 調用父類的構造方法;
  • 調用父類的方法(子類覆蓋了父類的方法時);
  • 訪問父類的數據域(能夠這樣用但沒有必要這樣用)。

調用父類的構造方法語法:

super();  super(參數列表);

注意:super 語句必須是子類構造方法的第一條語句。不能在子類中使用父類構造方法名來調用父類構造方法。 父類的構造方法不被子類繼承。調用父類的構造方法的惟一途徑是使用 super 關鍵字,若是子類中沒顯式調用,則編譯器自動將 super(); 做爲子類構造方法的第一條語句。這會造成一個構造方法鏈。

靜態方法中不能使用 super 關鍵字。

調用父類的方法語法:

super.方法名(參數列表);

若是是繼承的方法,是沒有必要使用 super 來調用,直接便可調用。但若是子類覆蓋或重寫了父類的方法,則只有使用 super 才能在子類中調用父類中的被重寫的方法。

四、this 關鍵字

this 關鍵字表示當前對象。可用於:

 

  • 調用當前類的構造方法,而且必須是方法的第一條語句。如:this(); 調用默認構造方法。this(參數); 調用帶參構造方法。
  • 限定當前對象的數據域變量。通常用於方法內的局部變量與對象的數據域變量同名的狀況。如 this.num = num。this.num 表示當前對象的數據域變量 num,而 num 表示方法中的局部變量。
相關文章
相關標籤/搜索