国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

java中內部類的學習再學習

2019-11-06 06:06:13
字體:
來源:轉載
供稿:網友

一些基礎知識點慢慢掌握理解,以前還是很菜的。

首先拋出一個命題,一個類文件中可以有多個public 修飾的類么?可以

答案就是用public修飾成員內部類。

java有4種內部類:

首先四種內部類有共同的性質:

1、都是獨立的類,在編譯后都會產生.class文件,內部類以“外部類$內部類.class”文件和外部類在同一文件夾下面。

2、內部類(靜態內部類有區別)可以訪問外部類的任何屬性和方法,無論是否是PRivate的

1、靜態內部類;

public class OuterClass {	static class innerClass{}  }①:靜態內部類它可以不依賴于外部類實例而被實例化,而通常內部類需要在外部類實例化之后才能被實例化。

②:靜態內部類不能與外部類有相同的名字,不能訪問外部類的普通成員變量,只能訪問外部類中靜態成員和靜態方法(包括private的)

2、成員內部類;

public class OuterClass {	class innerClass{}  }①:它可以自由的應用外部類的屬性和方法,無論這些是靜態還是非靜態的。

②:但是不能定義靜態的方法或者屬性,應為他和一個實例綁定在一起了。

③:只有外部類被實例化后,這個類才能被實例化。

3、局部內部類;

public class OuterClass {	public void menberFunction(){		class InnerClass{}	}}①:局部內部類和局部變量一樣,不能被public、protected、private、以及static修飾。

②:只能訪問方法中定義為final類型的局部變量。

4、匿名內部類;

public class OuterClass extends Frame{	public OuterClass(){		addWindowListener(new WindowAdapter() {			//匿名內部類		});	}}①:是一種沒有類名的內部類,代碼很簡介,緊湊,一般用于GUI編程中事先事件處理

最后借用一道題來加深理解:

有如下代碼:

public class OuterClass {	public void method(){		//Line3	}	public class Inner{}	public static void main(String[] args){		OuterClass oc = new OuterClass()		//Line8	}}一下哪幾項是正確的?

A:new Inner();    //line3

B:new Inner();    //line8

C:new Outer.Inner();    //line 8

D:new o.Inner();   //line8

答案是A;

非靜態的內部類初始化必須要依賴于外部類,而a中,能夠調用method方法,外部類肯定已經初始化了,所以能夠直接new inner()。

如果line8中填:oc.new Inner(); 則可以通過,借助外部類,從而實例化內部類。

如果內部類inner聲明為static的,則b也對。   

很基礎的東西,如果有哪里不對,還請各位指正


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 新巴尔虎左旗| 山阴县| 平昌县| 个旧市| 丰原市| 阿克陶县| 二手房| 斗六市| 大城县| 丽水市| 达孜县| 泽普县| 马边| 绥化市| 南汇区| 兴隆县| 页游| 任丘市| 白玉县| 固安县| 文登市| 凤城市| 甘谷县| 舞钢市| 定安县| 南木林县| 嫩江县| 富阳市| 义马市| 阿坝县| 桂阳县| 岳阳县| 廉江市| 泰安市| 安乡县| 林周县| 罗城| 舟山市| 万盛区| 富平县| 弥渡县|