物件導向(繼承 抽象 介面)

2021-06-16 23:54:05 字數 4046 閱讀 2896

一》繼承的好處:

1.提高**的復用性。

2.讓類與類之間產生了關係,有了這個關係,才有了多型的特性。

二》如何使用乙個繼承體系中的功能那?

想要使用體系,先查閱體系最父類的描述,因為最父類中定義的是該體系中的共性功能。

通過了解共性功能,就可以知道該體系的基本功能。

那麼這個體系已經可以基本使用了。

三》那麼在具體呼叫時,要建立最子類的物件,為什麼那?

一是因為有可能父類不能建立物件,

二是建立子類物件可以使用更多的功能,包括基本的也包括特有的。

簡單一句話:查閱父類功能,建立子類物件使用功能。

四》物件導向(子父類中變數的特點)

1》變數:(

super

如果子類中出現非私有的同名成員變數時,

子類要訪問本類中的同名變數,用this

子類要訪問父類中的同名變數,用super。

2》

super

的使用和

this

的使用幾乎一致。

this代表的是本類物件的引用,

super代表的是父類物件的引用。

3.**體現:

class fu

int num = 4;

class zi extends fu

int num = 5;

void show()

system.out.println(super.num);

class extendsdemo2

public static void main(string args)

zi z = new zi();

z.show();

"..."+z.num);

五》物件導向(子父類中函式的特點-

覆蓋)

一》子父類中函式的特點(覆蓋)

當子類出現和父類一摸一樣的函式時,當子類物件呼叫該函式,會執行子類函式的內容。如同父類的函式被覆蓋一樣。

這種情況是函式的另乙個特性:覆蓋(重寫);

二》當子類繼承父類,沿襲了父類的功能,到子類中。

但是子類雖具備該功能,但是功能的內容卻和父類不一致,

這時,沒有必要定義新功能,而是使用覆蓋的特性,保留父類的功能定義,並重寫功能內容。

三》注意:

子類覆蓋父類,必須保證子類許可權大於等於父類許可權,才可以覆蓋,否則編譯失敗。

靜態只能覆蓋靜態。

六》物件導向(子父類中建構函式的特點,子類例項化過程)

一》子父類建構函式的特點:

1.在對子類物件進行初始化時,父類的建構函式也會執行。

2.那是因為子類的建構函式預設第一行有一條隱式的語句super

();

3.super():會訪問父類中空引數的建構函式,而且子類中所有的建構函式預設第一行都是

super

();

二》為什麼子類一定要訪問父類的建構函式?

因為父類中的資料,子類可以直接獲取,所以子類物件在建立時,需要先檢視父類是如何對這些資料進行初始化的,

所以子類在物件初始化時,要先訪問一下父類中的建構函式,

如果要訪問父類中指定的建構函式,可以通過手動定義super

語句的方式來指定。

三》注意:super

語句一定定義在子類建構函式的第一行。

四》結論:子類的例項化過程。

子類的所有建構函式,預設都會訪問父類中空引數的建構函式,

因為子類每乙個建構函式內第一行都有一句隱式的super

();

當父類中沒有空引數的建構函式時,子類必須手動通過super

語句形式來訪問父類指定的建構函式。

當然:子類的建構函式第一行也可以手動指定this

語句類訪問本類中的建構函式,

子類中至少會有乙個建構函式訪問父類中的建構函式。

七》final關鍵字

一》final

:最終,作為乙個修飾符。

1.可以修飾類,函式,變數。

2.被final

修飾的類不可以被繼承,為了避免被繼承,被子類複寫功能。

比如:封裝好的工具類,只能用,不能繼承。就final

3.被final

修飾的方法不可以被複寫。

比如:父類中有乙個特殊功能的函式,不能被複寫,就final;

4.被final

修飾的變數是乙個常量只能賦值一次,既可以修飾成員變數,也可以修飾區域性變數。

注意:當在描述事物時,一些資料的出現值是固定的,那麼這時為了增強閱讀性,都給這 些值起個名字,方便與閱讀,而這個值不需要改變,所以加上final

修飾。

比如:static final double 

π = 3.14

;一般配合

static

用,共享。

內部類定義在類中的區域性位置上時,只能訪問該區域性被final

修飾的區域性變數。

八》抽象類

二》抽象類的特點:

1.抽象方法一定定義在抽象類中。

2.抽象方法和抽象類都必須被abstract

關鍵字修飾。

3.抽象類不可以用new 

建立物件,因為呼叫抽象方法沒有意義。

4.抽象類中的抽象方法要被呼叫,必須由子類複寫所有的抽象方法後,建立子類物件呼叫。

如果子類只覆蓋部分抽象方法,那麼該子類還是乙個抽象類。

/*當多個類中出現相同功能,但是功能主體不同,

這時可以進行向上抽取,只抽取功能定義,而不抽取功能主體*/

cabstract lass student

abstract void study();

"study");

class basestudent extends student

void study()

system.out.println("base study");

class advstudent extends student

void study()

system.out.println("adv study");

class abstractdemo

public static void main(string args)

九》介面一》介面:

當介面初期理解,可以認為是乙個特殊的抽象類,

當抽象類中的方法都是抽象的,那麼該類可以通過介面的形式來表現。

class:用於定義類;

inte***ce:用於定義介面;

二》介面定義時,格式特點:

1.介面中常見定義,常量,抽象方法。

2.介面中的成員都有固定修飾符。

常量:public static final

方法:public abstract

三》介面中的成員都是public的。

四》介面是不可以建立物件的,因為有抽象方法,

需要被子類實現,子類對介面中的抽象方法全部覆蓋後,子類才可以例項化。

否則子類是乙個抽象類。

inte***ce inter

public static final int num = 3;

public abstract void show();

class test implements inter

public void show()

class inte***cedemo

public static void main(string args)

test t = new test();

system.out.println(t.num);

system.out.println(test.num);

system.out.println(inter.num);

物件導向 繼承 抽象

抽象類可以繼承多個介面 介面可以繼承多個介面 類只能單繼承抽象類或多重繼承 抽象類不能例項化物件 介面也不能例項化物件 但是都可以通過 繼承抽象類或繼承介面的子類來是例項化物件 employee定義類 package 工資系統 public abstract class employee publi...

物件導向 繼承 介面

一 繼承 子類繼承父類,通過在類後面加冒號來繼承某個類 一旦形成繼承關係後,子類的物件就能夠使用父類中的公共屬性和方法函式 子類能夠轉換成父類,但父類不一定能夠轉成子類 只有當父類物件是由某個子類物件轉換來的時候,才能再把父類物件轉換回去,從哪個子類來的,就只能再轉回那個子類去 直接通過父類的建構函...

java 物件導向 介面 抽象

乙個物件例項化過程 person p new person 1,jvm會讀取指定的路徑下的person.class檔案,並載入進記憶體,並會先載入person的父類 如果有直接的父類的情況下 2,在堆記憶體中的開闢空間,分配位址。3,並在物件空間中,對物件中的屬性進行預設初始化。4,呼叫對應的建構函...