物件導向個人總結一些易錯知識

2021-07-10 09:06:03 字數 1964 閱讀 4910

一、類的載入

(1)同一類的載入順序

先加載入靜態**塊(隨著類的載入而載入)

再載入構造**塊(用於多個構造方法中相同的**)

最後構造方法

(2)若乙個子類繼承乙個父類,則在

new子類物件的時候會先載入父類構造器,用

super

(...

)呼叫,寫在子類構造方法的第一行(不寫預設為無參構造),。

例子:class fu {

static {

system.out.println("靜態**塊

fu");

system.out.println("構造**塊

fu");

public fu() {

system.out.println("構造方法

fu");

class zi extends fu {

static {

system.out.println("靜態**塊

zi");

system.out.println("構造**塊

zi");

public zi() {

system.out.println("構造方法

zi");

class extendstest2 {

public static void main(string args) {

zi z = new zi();

結果是:

靜態**塊fu

靜態**塊zi

構造**塊fu

構造方法fu

構造**塊zi

構造方法zi

二、繼承中子類方法訪問成員變數,成員方法的特點

(1)直接使用this和su

per關鍵字分別訪問子類或父類成員。

(2)若沒有使用關鍵字

子類的方法會先在子類的成員範圍找,有就使用,沒有就再去父類的成員範圍找。這也就意味著當子類有和父類同名的成員變數或成員方法(重寫),若不使用super

關    鍵字,會使用子類的成員。

三、多型

(1)多型的三要素

*繼承或實現結構

*方法重寫

*向上轉型

(2)多型作用

*提高**的維護性

(繼承體現)

*提高**的擴充套件性

(多型體現)

(3)理解多型

例:class  father{

int age;

void enjoy(){

system.out.println(「看電視」);

class son extends father{

int age;

void enjoy(){

system.out.println(「踢球」);

進行向上轉型用父類引用指向之類物件,father f=new son(),

按照之前的理解,父類引用

f應該只能訪問到子類物件中的父類構造器那一部分,所以

f只能呼叫父類有的變數和方法。

然而在實際使用過程中,f

在呼叫成員變數

age時呼叫的確實是父類

father

的age

,但在呼叫

enjoy()

方法時卻是呼叫子類重寫的方法,會出現這種情況也是重寫和多型的意義所在

(4)動態繫結機制

為什麼會產生這樣的上述的情況。

首先方法和成員變數不同,方法存在於方法區中,當父類引用f

找到子類中的父類構造器後,在父類構造器中會有乙個指向方法區中父類

father

的enjoy()

方法的指標,但是在程式執行期間當在

new son()

物件的時候,指向

father

的enjoy()

方法的指標會根據物件本身去尋找子類是否有重寫該方法,有則該指標指向重寫後的方法。這就是動態繫結機制。

1006 1015一些易錯點

1010 計算分數的浮點數值 時間限制 1000 ms 記憶體限制 65536 kb 提交數 27986 通過數 16833 題目描述 兩個整數a和b分別作為分子和分母,既分數a b,求它的浮點數值 雙精度浮點數,保留小數點後9位 輸入 輸入僅一行,包括兩個整數a和b。輸出 輸出也僅一行,分數 a ...

php一些易錯點

1.在函式外宣告的引數為global,在函式內呼叫時,需加上global x 100 function test 2.型別為弱型別,不用強制宣告其型別 3.常量使用define函式宣告,在使用時不需要加上 符號 define pi 3.1416926 echo pi 4.不僅比較值還有型別 5.fo...

物件導向的一些知識

oop object oriented programming 物件導向程式設計 00d object oriented design 物件導向設計 面向過程 就是分析出解決問題所需要的步驟,然後用函式把這些步驟一步一步的實現。例如 把大象裝進冰箱裡去。第一步 將冰箱開啟 第二步 將大象放進冰箱 第...