java下四種內部類
內部類一般來說包括這四種:成員內部類、區域性內部類、匿名內部類和靜態內部類
1.成員內部類(定義在類中的類叫成員內部類)
(1)成員內部類 public class DemolInnerClass { public static void main(String[] args) { //外部類名.內部類名 變數名= 外部類物件.內部類物件 Outer.InnerClass oi = new Outer().new InnerClass();//外部類要訪問內部類的成員,必須建立物件。 oi.getNumber(); } } class Outer{ /*public*/private int number = 10;//定義在類中的變數叫成員變數 class InnerClass{//定義在類中的類叫做成員內部類 public void getNumber(){ System.out.println(number);//成員內部類可以直接訪問外部類的成員,包括私有 } } }
執行的結果:10
(2)成員內部類用private修飾,私有成員內部類
public class Demol2InnerClass { public static void main(String[] args) { OuterPrivate op = new OuterPrivate(); op.getInnerPrivate(); } } class OuterPrivate{ private int number = 10; private class InnerPrivate{ //成員內部類私有使用(private) public void getNumber(){ System.out.println(number); } } public void getInnerPrivate(){//只能在外部類中建立內部物件進行訪問 InnerPrivate ip = new InnerPrivate(); ip.getNumber(); } }
2.區域性內部類
public class Demol3InnerClass { public static void main(String[] args) { OuterLocal outerLocal = new OuterLocal(); outerLocal.LocalMethod(); } } /* 區域性內部類:在方法中定義的內部類 * 區域性內部類在訪問他所在方法中的區域性變數必須用final修飾,為什麼? 因為當呼叫這個方法時,區域性變數如果沒有用final修飾,他的生命週期和方法的生命週期是一樣的, 當方法彈棧,這個區域性變數也會消失,那麼如果區域性內部類物件還沒有馬上消失想用這個區域性變數, 就沒有了,如果用final修飾會在類載入的時候進入常量池,即使方法彈棧,常量池的常量還在, 也可以繼續使用 */ class OuterLocal{ public void LocalMethod(){ class LocalInner{//區域性內部類:定義在成員方法中的類 final int number = 10; public void getNumber(){ System.out.println(number); } } LocalInner localInner = new LocalInner(); localInner.getNumber(); } /*public void run() { LocalInner localInner = new LocalInner(); //區域性內部類,只能在其所在的方法中訪問 localInner.getNumber(); }*/ }
3.靜態成員內部類,
public class Demol4InnerClass {
public static void main(String[] args) {
//外部類名.內部類名 物件名 = 外部類名.內部類物件;
OuterStatic.Inner1 oi = new OuterStatic.Inner1();
oi.method();
OuterStatic.Inner2.print();
}
}
class OuterStatic{
static class Inner1{//靜態成員內部類:成員內部類被靜態修飾的類
public void method() {
System.out.println("method");
}
}
static class Inner2{
public static void print() {
System.out.println("print");
}
}
}
4.匿名內部類,就是沒有名字的內部類
public class Demo1_NoNameInnerClass {
public static void main(String[] args) {
Outer1 outer1 = new Outer1();
outer1.method();
}
}
/* A:匿名內部類
* 就是內部類的簡化寫法。
* B:前提:存在一個類或者介面
* 這裡的類可以是具體類也可以是抽象類。
* C:格式:
new 類名或者介面名(){
重寫方法;
}
* D:本質是什麼呢?
* 是一個繼承了該類或者實現了該介面的子類匿名物件。
*/
interface InnerInterface{
public void print();
}
class Outer1{
/*abstract*/ class Inner implements InnerInterface{
public void print() {
System.out.println("print");
}
}
public void method(){
// Inner i = new Inner();
// i.print();
// new Inner().print();//建立InnerInterface的子類Inner
// InnerInterface i1 = new Inner(); //父類引用指向子類物件
// 上面的內部類可以用匿名內部類來實現
new Inner(){
public void print() {
System.out.println("print");
}
}.print();
}
}
相關推薦
java下四種內部類
內部類一般來說包括這四種:成員內部類、區域性內部類、匿名內部類和靜態內部類 1.成員內部類(定義在類中的類叫成員內部類) (1)成員內部類 public class DemolInnerClass { public static void main(String[
JAVA的四種內部類及為什麼要用內部類
最近在看java的原始碼,但是時長能看一個類中都會有幾個內部類比如LinkedList中private class ListItr implements ListIterator<E> { private Node<E>
java 四種內部類區別
Java中的內部類共分為四種: 靜態內部類static inner class (also called nested class) 成員內部類member inner class 區域性內部類local inner class 匿名內部類anonymous inn
java 四種內部類 使用細節(含程式碼)
一: 內部類 定義在類體部,方法體部,甚至比方法體更小的程式碼塊內部的類(if 語句裡面等) 1.靜態內部類(內部類中最簡單的形式) 1.宣告在類體部,方法體外,並且使用static修飾的內部類 2.訪問特點可以類比靜態變數和靜
Java 四種內部類
1、成員內部類: 即作為外部類的一個成員存在,與外部類的屬性、方法並列。 注意:成員內部類中不能定義靜態變數,但可以訪問外部類的所有成員。 public class Outer{ private static int i = 1; private int j=10; private int k=20; pub
java四種內部類詳解
一般來說,有4中內部類:常規內部類、靜態內部類、區域性內部類、匿名內部類。 一.常規內部類:常規內部類沒有用static修飾且定義在在外部類類體中。 1.常規內部類中的方法可以直接使用外部類的例項變數和例項方法。 2.在常規內部類中可以直接用內部類建立物件
四種內部類簡單介紹(inner class)
1.靜態內部類(static inner class): 只能訪問外部類的靜態成員變數和靜態方法,生成靜態內部類的方式為:StaticInner.Inner inner=new StaticInne
從零開始學Java之五種內部類將執行緒隱藏類中
1.使用普通內部類繼承Thread類 <code class="hljs java has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box;
java的4種內部類
原文連結:https://blog.csdn.net/ll530304349/article/details/52926848一直對內部類、靜態內部類這些名詞的認識不太清晰,做一些小小的總結。 一、什麼是巢狀類(nested class)? 首先Java中的巢狀類(neste
java(四)內部類與多重繼承
內部類定義:一個定義在類內部的類。之所以用內部類是因為使用內部類最吸引人的原因是:每個內部類都能獨立地繼承一個(介面的)實現,所以無論外圍類是否已經繼承了某個(介面的)實現,對於內部類都沒有影響。可以這樣說,介面只是解決了部分問題,而內部類使得多重繼承的解決方案變得更加完整。
四種內部類,(Inner Class)
內部類: 定義在內部的類,不一定非得是定義在類的內部, 可以分為4種類型。 第一: 靜態內部類(定義在類中) 靜態的內部類與其外部類是編譯成 兩個.class檔案 的,注意的是外部類是不可以定義為靜態的。 為什麼外部的類不可以定義為靜態的 解釋
java基礎:熟悉3種內部類的寫法,重點匿名內部類的使用
package methodinner;public class Test { class Duanzanshichangzheng { public void noProblem() { System.out.println("患有急性短暫失常症,開車撞死人沒事"
Java中的三種內部類
內部類 內部成員類:和成員方法並列,無static修飾 嵌入類:和成員方法並列,並且有static修飾 本地類:在成員方法中定義的類 例項如下:OuterClass是一個外部類,裡面定義了三個內部類InnerClass、NestedClass、MethodClass分別對應
Java開發筆記(五十四)內部類和嵌套類
pro get print 資源 sys 文件 stat 解決 運用 通常情況下,一個Java代碼文件只定義一個類,即使兩個類是父類與子類的關系,也要把它們拆成兩個代碼文件分別定義。可是有些事物相互之間密切聯系,又不同於父子類的繼承關系,比如一棵樹會開很多花朵,這些花兒作為
java中四種訪問修飾符
pub oid 默認 成員變量 修飾 對象 fault 其中 () Java中的四種訪問修飾符:public、protected、default(無修飾符,默認)、private。 四種修飾符可修飾的成分(類、方法、成員變量) public protect
java公開課-03-內部類
多重繼承 nbsp 局部內部類 sta ati 如果 權限 接口 隱藏 內部類 ().內部類的作用. 1.實現了內部類的隱藏. 2.實現了多重繼承. 3.內部類擁有所有外部類所擁有的屬性和方法的訪問權限. 4.避免修改接口的時候出現同名方法.
java中的匿名內部類總結
但是 star per 處的 書寫 括號 art log num 匿名內部類也就是沒有名字的內部類 正因為沒有名字,所以匿名內部類只能使用一次,它通常用來簡化代碼編寫 但使用匿名內部類還有個前提條件:必須繼承一個父類或實現一個接口 實例1:不使用匿名內部類來實現抽象方法
Java:詳解內部類
進行 system 創建 經典 生成 接口 為什麽 bsp 產生 可以將一個類的定義放在另一個類的定義內部,這就是內部類。 內部類是一個非常有用的特性但又比較難理解使用的特性(鄙人到現在都沒有怎麽使用過內部類,對內部類也只是略知一二)。 第一次見面
java中的匿名內部類
匿名內部類/* 知識點:匿名內部類 作用: 匿名內部類也就是沒有名字的內部類 正因為沒有名字,所以匿名內部類只能使用一次,它通常用來簡化代碼編寫 但使用匿名內部類還有個前提條件:必須繼承一個父類或實現一個接口 */ //抽象類 abstract class Person {
Java學習筆記23---內部類之局部內部類只能訪問final的局部變量
結束 stat nal person pos 內部類 style inter 周期 局部內部類是定義在方法體或代碼塊中的類,在筆記19中已有過簡單介紹。 今天要討論的是局部內部類為什麽只能訪問為常量的局部變量。 作者: 博客園--蟬蟬 請尊重作者勞動成果,轉載請在標題註