內部類
內部類可以直接訪問外部類成員 包括私有成員
外部類要訪問內部類中的成員必須要建立內部類的物件
class outer
}public void method()
}
內部類一般用於類的設計
分析事物時 發現該事物描述中還有事物 而且這個事物還在訪問被描述事物的內容
這時就可以將還有的事物用內部類來描述
直接訪問外部類中的內部類的成員
outer.inner in = new outer().new inner();
in.show();//少用
如果內部類是靜態的話 代表 外部類一載入內部類就存在 此時 就相當於乙個外部類
outer.inner in = new outer.inner();這個時候就是可以直接new內部類
當內部類中定義了靜態成員 那麼該內部類必須是靜態
只有內部類是靜態的那麼該靜態成員才可以是屬於那種類一載入就能訪問
為什麼內部類能直接訪問外部類中成員呢?
因為內部類持有了外部類的引用 即 外部類名.this
內部類放在區域性位置
比如函式內部
內部類訪問區域性變數的時候 變數一定是final型別 ?
內部類在區域性位置只能訪問區域性中被final修飾的區域性變數
匿名內部類
實質就是匿名子類物件
new 父類or介面()
內部類的簡寫格式
前提 內部類必須繼承或者實現乙個外部類或者介面
首先要匿名 就是沒有名字 new什麼 new他父親 ()
abstract class demo
class outer
}//在這裡還可以呼叫裡面的show方法
}}
以上格式若想呼叫方法只能再new在. 如何不new呼叫多個方法
那要給匿名內部類乙個標誌 並不是給內部類起名字
abstract inter
class outer
// void show2(){}
//}public void method()
void show2(){}
};in.show1();
in.show2();
}}
使用場景:
當函式引數是接型別的時候 而且介面中的方法不超過三個
可以用匿名內部類作為實際引數進行傳遞引數過多就容易臃腫
class innerclass
});}
public static void show(inter in)
}
內部類細節
匿名內部類就是基於多型的基礎上用父類應用指向乙個子類物件
所以匿名內部類真的不能訪問子類中未重寫父類方法的方法 即 子類特有的方法
java 匿名內部類學習
宣告 如下內容截止執行結果是畢向東老師的課堂筆記 匿名內部類。就是內部類的簡寫格式。必須有前提 內部類必須繼承或者實現乙個外部類或者介面。匿名內部類 其實就是乙個匿名子類物件。格式 new 父類or介面 abstract class demo class outer public void meth...
Java匿名內部類學習
匿名內部類基本知識與用法 匿名內部類,是乙個沒有類名的類,通常用在當乙個繼承父類或者實現介面的類只需要用一次的時候,用來簡化 編寫。總結一下匿名內部類有幾個基本點 繼承父類或者實現介面或者實現抽象類 匿名內部類用new來生成乙個繼承父類的物件的引用,因此可以用來作為參引數傳遞 匿名內部類只能使用一次...
學習筆記 匿名內部類
匿名內部類 沒有名字的內部類,不能被呼叫,只能用一次的類。這個類定義在另乙個類的內部。匿名內部類必須且最多實現乙個介面或者繼承乙個父類。final jbutton updatejbutton new jbutton update infojtable.addmouselistener new mou...