java內部類總結

2021-08-26 02:47:49 字數 3213 閱讀 9231

內部類概述

分為成員內部類,靜態內部類,區域性內部類,匿名內部類

內部類訪問特點

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

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

* 外部類名.內部類名 物件名 = 外部類物件.內部類物件;

1.成員內部類:

public class test }/*

* a:內部類概述

* b:內部類訪問特點

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

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

* 外部類名.內部類名 物件名 = 外部類物件.內部類物件;

* c:案例演示

* 內部類極其訪問特點

*/class outer

}}

輸出:

面試題:

public class test 

}//要求:使用已知的變數,在控制台輸出30,20,10。

//內部類之所以能獲取到外部類的成員,是因為他能獲取到外部類的引用外部類名.this

class outer

}}

輸出:

30

2010

成員內部類的私有使用:

public class test 

}class outer

} public void print()

}

輸出:

2.靜態內部類(算是成員內部類的一種):

public class test 

}class outer

} static class inner2

}}

輸出:

method

print

3.區域性內部類:

區域性內部類訪問區域性變數必須用final修飾

因為當呼叫這個方法時,區域性變數如果沒有用final修飾,他的生命週期和方法的生命週期是一樣的,當方法彈棧,這個區域性變數也會消失,那麼如果區域性內部類物件還沒有馬上消失想用這個區域性變數,就沒有了,如果用final修飾會在類載入的時候進入常量池,即使方法彈棧,常量池的常量還在,也可以繼續使用,但是jdk1.8取消了這個事情,雖然取消,如果在書寫**時候,沒有手動新增,系統底層也會預設變數加了final修飾.

public class test 

}//區域性內部類

class outer

} inner i = new inner();

i.print();

} /*public void run() */

}

輸出:

10
記憶體**如下:

4.匿名內部類(算是區域性內部類的一種):

a:匿名內部類

* 就是內部類的簡化寫法。

b:前提:存在乙個類或者介面

* 這裡的類可以是具體類也可以是抽象類。

c:格式:

new 類名或者介面名()

d:本質是什麼?

是乙個繼承了該類或者實現了該介面的子類匿名物件。

最典型的例子就是:awt或者swing裡面按鈕響應事件監聽的方法還有多執行緒裡面就運用的匿名內部類

public class test }/*

* a:匿名內部類

* 就是內部類的簡化寫法。

* b:前提:存在乙個類或者介面

* 這裡的類可以是具體類也可以是抽象類。

* c:格式:

* new 類名或者介面名()

* d:本質是什麼呢?

* 是乙個繼承了該類或者實現了該介面的子類匿名物件。

* e:案例演示

* 按照要求來乙個匿名內部類

*/inte***ce inter

class outer

} public void method()

}.print(); //這裡整個代表inner的子物件,然後再呼叫print方法

}}

輸出:

print
匿名內部類重寫多個方法呼叫:

public class test 

}inte***ce inter

//匿名內部類只針對重寫乙個方法時候使用

class outer

public void show2()

}.show1();

new inter()

public void show2()

}.show2();*/

inter i = new inter()

public void show2()

/*public void show3() */

};i.show1();

i.show2();

//匿名內部類是不能向下轉型的,因為沒有子類類名

}}

輸出:

show1

show2

匿名內部類例項:

public class test 

}); }}

//這裡寫抽象類,介面都行

abstract class person

class persondemo

}; */

public void method(person p)

}class student extends person

}

輸出:

show
面試題總結:

public class test 

}//按照要求,補齊**

inte***ce inter

class outer

};}}

輸出:

show

java內部類總結

內部類 1,概述 內部類是指在乙個外部類的內部再定義乙個類。內部類作為外部類的乙個成員,並且依附於外部類而存在的。內部類可為靜態,可用protected和private修飾。而外部類不可以 外部類只能 使用public和default 2,分類 成員內部類 區域性內部類 靜態內部類 匿名內部類 圖形...

Java內部類總結

內部類 1,概述 內部類是指在乙個外部類的內部再定義乙個類。內部類作為外部類的乙個成員,並且依附於外部類而存在的。內部類可為靜態,可用protected和private修飾。而外部類不可以 外部類只能 使用public和default 2,分類 成員內部類 區域性內部類 靜態內部類 匿名內部類 圖形...

java內部類總結

內部類總結 1.首先,把內部類作為外部類的乙個特殊的成員來看待,因此它有類成員的封閉等級 private protected,預設 friendly public它有類成員的修飾符 static,final,abstract 2.非靜態內部類nested inner class,內部類隱含有乙個外部...