物件導向(下)

2021-07-03 17:42:13 字數 1813 閱讀 5420

一、在類中,宣告為static的成員變數為靜態成員變數,它為該類的公用變數,對所有物件來說,它在記憶體只有乙份;在static的靜態方法中不會將物件引用傳遞給他,因此,靜態方法不能訪問非靜態成員;可以通過物件引用和類名來訪問靜態成員變數。

二、構造**塊和靜態**塊

(1)構造**塊:

構造**塊中定義的是給不同的物件共性的初始化內容。物件一建立就執行,優先於建構函式。

建構函式和構造**塊的區別:建構函式是給對應的物件初始化,而構造**塊是給所有物件進行統一的初始化。

(2)靜態**塊

特點:隨著類的載入而執行;只執行一次;優先於主函式執行。作用是對類初始化。靜態**塊中無法對成員變數訪問,除非是static型別的成員變數。

static
三、內部類

1、內部內的訪問規則

(1)內部類可以直接訪問外部類中的成員,包括私有的。之所以能夠直接訪問,是因為內部類持有了乙個外部類的引用,格式為:外部類名.this。

(2)外部類要訪問內部類,必須建立內部類物件。

(3)如何建立內部類物件:new 外部類.new 內部類。

class outer 

}void methd()

}public

class outerdemo

}

輸出結果:

inner

:1inner

:2inner

:3inner

:1inner

:2inner

:3

2、靜態內部類

在外部類的內部定義

特點:不能訪問外部類的非靜態成員。出現了訪問侷限。

(1)在外部其他類中如何訪問靜態內部類非靜態成員?

new outer.inner().function();

(2)在外部其他類中如何訪問靜態內部類的靜態成員?

outer.inner.function();

注意:(1)當內部類中定義了靜態成員,該內部類必須宣告為靜態內部類。(2)、當外部類中的靜態方法訪問內部類時,內部類也必須是靜態的。

3、匿名內部類

//定義介面

inte***ce absdemo

class classtest

}public void method() */

//匿名內部類的寫法:

public

void

method()

};d.show();

}}public

class stringtoint

}

輸出

x=3

總結一下匿名內部類的特點:

①匿名內部類是內部類的簡寫格式。換了一下寫法而已。

②定義匿名內部類的前提:

內部類必須是繼承某個類或者實現某個介面.存在父類引用指向子類物件。

③匿名內部類的格式:new 父類或者介面()

④其實匿名內部類就是乙個匿名子類物件。

⑤匿名內部類中定義的方法最好不要超過3個。

物件導向 下

類的繼承 子類會繼承父類的所有屬性和方法 package duixiang1 繼承 public class example01 class animal class dogextends animal 重寫父類方法 子發方法和父類的一樣即重寫 package duixiang1 重寫 public...

Java物件導向(下)

1.抽象類 概念 當乙個類中沒有足夠的資訊去描述乙個具體事物時,那麼這個類就是抽象類。注意 抽象類一般都是對概念類別的描述,不過這個概念下存在著n多具體的事物。語法 訪問修飾符 abstract class 類名 抽象類 應用示例 定義乙個圖形類 abstract class shape 定義抽象方...

JavaSE 物件導向下

1.1.定義乙個father和child類,並進行測試。要求如下 1 father類為外部類,類中定義乙個私有的string型別的屬性name,name的值為 zhangjun 2 child類為father類的內部類,其中定義乙個introfather 方法,方法中呼叫father類的name屬性...