繼承,多型,介面,內部類

2021-10-19 22:17:08 字數 4693 閱讀 1667

package extend;

public

class

people

public

void

setage

(int age)

public

people()

public

people

(int age)

public

void

show()

/* fianl關鍵字的作用

fianl修飾類:該類不能被繼承(不能有子類,但是可以有父類)

final修飾方法:該方法不能被重寫

final修飾變數:表明該變數是乙個常量,不能再次賦值

fianl修飾基本資料型別變數

final 修飾指的是基本型別的資料值不能發生改變

final修飾引用資料型別變數

final 修飾指的是引用型別的位址值不能發生改變,但是位址裡面的內容是可以發生改變的

*//* static修飾的特點:

1. 被類的所有物件共享,這也是我們判斷是否使用靜態關鍵字的條件

2. 可以通過類名呼叫當然,也可以通過物件名呼叫【推薦使用類名呼叫】

static的訪問特點

非靜態的成員方法

* 能訪問靜態的成員變數

* 能訪問非靜態的成員變數

* 能訪問靜態的成員方法

* 能訪問非靜態的成員方法

靜態的成員方法

* 能訪問靜態的成員變數

* 能訪問靜態的成員方法

總結成一句話就是:

靜態成員方法只能訪問靜態成員

*/}

package extend;

public

class

student

extends

people

public

void

setheight

(int height)

@override

public

intgetage()

@override

public

void

setage

(int age)

public

student()

public

student

(int age)

@override

//方法重寫宣告

public

void

show()

}

package extend;

public

class

test

}

package duo;

public

class

animal

public

animal

(string name,

int age)

public string getname()

public

void

setname

(string name)

public

intgetage()

public

void

setage

(int age)

public

void

eat(

)}

package duo;

public

class

dogextends

animal

public

dog(string name,

int age)

@override

public

void

eat(

)}

package duo;

public

class

catextends

animal

public

cat(string name,

int age)

@override

public

void

eat(

)}

package duo;

public

class

demo

}

package duo;

/*抽象類和介面的區別

- 成員區別

- 抽象類

​ 變數,常量;有構造方法;有抽象方法,也有非抽象方法

- 介面

​ 常量;抽象方法

- 關係區別

- 類與類

​ 繼承,單繼承

- 類與介面

​ 實現,可以單實現,也可以多實現

- 介面與介面

​ 繼承,單繼承,多繼承

- 設計理念區別

- 抽象類

​ 對類抽象,包括屬性、行為

- 介面

​ 對行為抽象,主要是行為

*/public

abstract

class

people

public

people

(string name,

int age)

int i=10;

public

abstract

void

show()

;}

package duo;

public

class

student

extends

people

public

student

(string name,

int age)

@override

public

void

show()

}

package jie;

public

inte***ce

animal

package jie;

public

class

dogimplements

animal

}

package jie;

public

inte***ce

inter1

package jie;

public

inte***ce

inter2

package jie;

public

inte***ce

inter3

extends

inter1

,inter2

package jie;

/* * 類與類的關係

* ​ 繼承關係,只能單繼承,但是可以多層繼承

* 類與介面的關係

* ​ 實現關係,可以單實現,也可以多實現,還可以在繼承乙個類的同時實現多個介面

* 介面與介面的關係

* ​ 繼承關係,可以單繼承,也可以多繼承

*/public

class

demo

extends

object

implements

inter1

,inter2,inter3

package inclass;

/* 內部類的訪問特點

* 內部類可以直接訪問外部類的成員,包括私有

* 外部類要訪問內部類的成員,必須建立物件

*/public

class

demo1

}*///成員內部類

private

class

test

}public

void

show2()

}

package inclass;

public

class

demo2

} test t=

newtest()

; t.

show()

;}}

package inclass;

public

inte***ce

inter

package inclass;

public

class

demo3

}.show();*/

//匿名內部類

inter i=

newinter()

};i.

show()

;}}

package inclass;

public

class

test

}

多型 介面 內部類

多型的機制問題,參考這篇博文,講的通俗易懂,大概為下 在建立子物件時,呼叫子類構造器前會呼叫父類構造器 即建立乙個子物件,這個子物件中隱含著乙個父物件。多型引用的指標指向的是子物件中的這個父物件,而父物件中的方法指標指向方法區的哪個方法,是根據建立的子物件的型別決定的,當你建立這個子物件時,該子物件...

介面,多型,內部類筆記

介面型別的應用 用於介面指向型別的子類物件 packagecom.sdut.day2 inte ceusb public classbookpc public static voiduseusb usb u classupanimplementsusb public voidclose classm...

內部類繼承

成員內部類的子類可以是內部類,也可以不是內部類 當成員內部類的子類不是內部類或子類雖是內部類但與其父類不在同乙個外部類時,子類的構造方法第一句要顯式新增如下的語句 外部類物件引用.super 引數 這裡的外部類指父類所在的外部類編譯器預設給成員內部類的構造方法傳入乙個引數,該引數是內部類所依附的外部...