物件導向 內部類

2021-08-08 20:40:11 字數 1863 閱讀 4159

定義:將乙個類定義在另乙個類的裡面,裡面那個類就是內部類,又稱為巢狀類或者內建類。

內部類生成的位元組碼檔名格式為:outerclass$innerclass.class

內部類可以分成成員內部類、區域性內部類以及匿名內部類。

在乙個類中使用內部類,可以在內部類中直接訪問其所在類的私有成員變數,儘管這些類成員被修飾為private。外部類不可以直接訪問內部類成員變數,但是可以通過get方法來獲得。

內部類的例項一定要繫結在外部類的例項上。如果從外部類中初始化乙個內部類物件,那麼內部類就會繫結在外部類物件上。內部類的物件例項化必須在外部類或外部類的非靜態方法中實現。如果在外部類和非靜態方法之外例項化內部類,需要使用外部類。

即內部類作為外部類的乙個成員:

public

class outerclass

}

示例:

class outer

class inner

void inf()

int y=0;//定義內部類成員變數

}inner fuc()

public

static

void

main(string args)

}

內部類不僅可以在類中進行定義,也可以在類的區域性位置定義,如類的方法裡:

class outer

}//inner in =new innner();

object in =new inner();

return

in; }

}class innerclassdemo1

注意:在方法中定義的內部類只能訪問方法中final型別的區域性變數。

匿名內部類即內部類的簡寫格式。

存在的前提:內部類必須繼承或者實現乙個外部類或者介面

就是乙個匿名子類物件

格式:new 父類or介面名()

示例1:

abstract

class

demo

class

outer}*/

public

void method()

}.show();//匿名內部類物件呼叫方法

}}class

innerclassdemo2

}

示例2:

class

outer

}obj.show();//編譯錯誤 因為匿名內部類這個子類物件被向上轉型為了object型別

//這樣就不能再使用子類特有的方法(show)了

}}class

innerclassdemo3

}

1、堆內建立物件空間,分配位址。成員變數預設初始化。

2、建構函式壓棧,初始化父類的建構函式。(super();)

3、成員變數顯式初始化

4、執行構造**塊

5、執行建構函式內本類具體的初始化。

示例:

class

parent

parent()

void show()

}class

sonextends

parent

son()

void show()

}public

class

demo

}/*輸出結果:

parent block

son show...0

son block

son show...8

*/

物件導向 內部類

在學內部類前,我自己先問了自己2個問題!1 什麼是內部類呢?簡單說 就是在乙個類中在建立乙個類。2 而為什麼又要搞這個內部類呢?我想是為了在於現實中的一些建模問題吧,讓事物更加形象。比如要建立 人體 這個類,有很多功能吧,比如 吃飯 看書 而這些功能又需要 嘴巴 眼睛 那麼我們就不得不建立 嘴巴 眼...

物件導向 內部類

asp.net android ios開發 net培訓 期待與您交流!7.1內部類 內部類 將乙個類定義在另乙個類裡面,裡面那個類就稱為內部類.格式 class outclass 注意 內部類可以定義在外部類的成員位置,也可以是在外部類的區域性位置.如 class outclass 注意 內部類可以...

物件導向 內部類

內部類 將乙個類定義在另乙個類的裡面,裡面那個類就成為內部類 內建類,巢狀類 內部類的定義原則 當描述事物時,事物的內部還有事物,該事物用內部類來描述。因為內部事物在使用外部事物的內容 內部訪問特點 1 內部類可以直接訪問外部類中的成員,包括私有成員。因為內部類持有乙個外部類的引用,格式為 外部類....