06.繼承和多態

一.類的繼承

類繼承的實現

Java語言具備單繼承的特色,不支持多繼承,每一個子類只有一個直接父類。java

子類會繼承父類中全部非private修飾的屬性和方法,且不能得到父類的構造器。this

class subClassName extends superClassName[implements interfaceNameList]{
	//類體
}
extends//繼承關鍵字

方法的重寫

方法的重寫是指在子類中使用和父類徹底同名的方法,且方法的參數(個數,類型,排列順序)和返回類型徹底同樣。code

重寫方法時,子類的訪問控制權限不能低於父類的訪問控制權限。對象

super關鍵字

使用super關鍵字能夠訪問被子類隱藏或重寫成員,也能夠訪問未被隱藏的成員。繼承

若是沒有顯式的使用super關鍵字調用父類的構造方法,系統會隱含調用super這個方法。接口

當在子類構造器中調用父類構造器時,super關鍵字應該做爲子類構造器方法體的第一個執行語句。class

  • 調用父類中被重寫的方法

super.方法名([參數表]);
  • 訪問父類中被重寫的方法

super.成員變量名;
  • 調用父類的構造器

super([參數表]);

this關鍵字

除了默認指代當前實例對象,this還有其餘用法。import

若是一個類中定義了多個構造方法,可使用this在某一個構造方法中引用其餘構造方法。變量

二.抽象類和方法

抽象類

抽象類是指只能被繼承而不能生成具體對象的類。List

抽象類中能夠包含抽象方法,也能夠不包含抽象方法。但只要一個類包含一個抽象方法,這個類就是抽象的。

抽象類只能做爲父類使用,由它派生的子類必須實現抽象類的全部抽象方方法。

abstract class className{
	//屬性
	//抽象方法
	[訪問控制修飾符]abstract 返回值類型 方法名([形參列表]);
	//非抽象方法
	[訪問修飾控制符]返回值類型 方法名([形參列表]){
	
	}
}

抽象方法

抽象方法僅僅爲全部子類定義一個統一的接口,具體實現經過派生類對抽象方法的覆蓋來實現。

抽象方法只有聲明,沒有方法體,以";"結尾。

構造方法,靜態方法,私有方法,final方法不能被聲明爲抽象方法。

abstract datatype AbstractMethodName(parameterList);

三.final修飾符

終極類

被final修飾的類,終極類不能擁有子類。

終極方法

被final修飾的方法,終極方法不能被子類重寫。

終極變量

final修飾的變量,終極變量取值在整個程序中不能改變,即常量。

四.接口

接口是一種特殊的抽象類。

經過接口能夠實現類間多重繼承的功能。

與類的繼承區分,對接口的繼承稱爲實現。

接口中不能定義變量,只能定義final修飾的常量。

接口是一個抽象類,接口中的方法都是抽象方法。

接口的聲明

interface關鍵字

[public] interface interfaceName[extends 父接口名列表]{
    //數據成員聲明
    [public][static]final datatype variableName = Value;
    //抽象方法聲明
    [public][abstract][native]return DataType methodName(parametersList);
}

接口的實現

implements關鍵字

public class Student implement people{

}

五.包

包是一種鬆散的類的集合,能夠將各類類文件組織起來。相似於其餘語言的命名空間,當一個類須要在多個地方重用時,應該把它放在包中。

建立包

缺省時,系統爲每個.Java源文件建立一個無名包,同個Java文件每一個類都屬於同一個包。

建立包的文件應該放在Java源文件的的第一個語句。

經常將包放在JAR文件中,一個JAR文件每每會包含多個包。

package packageName;
//多級子目錄
package packageName1,packageName2,packageName3;

引用包中的類

  • 包名.類名直接使用類

  • import導入包

//加載包中指定的類
import 包名.類名;
//加載包中的全部類
import 包名.*;
  • 同一個包或者缺省無名包將自動引用

  • Java.lang包中的類將會自動導入

相關文章
相關標籤/搜索