內(nèi)部類
它是一個單獨的類,可以隨意直接訪問外部類的所以變量(包括private),這是通過this的關(guān)系形成的,使得內(nèi)部類的對象可以隨意的訪問外不類中的所有成員。在內(nèi)部類中訪問外部類的覆蓋成員可以用classname.this. 。
內(nèi)部類對象的產(chǎn)生,
不能直接用new,先要產(chǎn)生一外部類對象后在引用這個對象的成員(內(nèi)部類)。即在訪問時要有一個指向。說明是那個類的內(nèi)部類對象。所以要先產(chǎn)生一外部類對象 outer.inner =out.new inner();
內(nèi)存圖--JAVA中凡是用new產(chǎn)生的對象都在堆內(nèi)存中,它的引用保存在棧內(nèi)存中。
對象的產(chǎn)生--用new , 用對象引用賦值。
方法內(nèi)部的內(nèi)的使用范圍只能在方法體內(nèi)部,
內(nèi)部類可以放在函數(shù)中,條件中,語句塊中。不管它嵌套多深,都可以隨意訪問外部類
內(nèi)部的訪問權(quán)限,和方法相同。private public default protected.還可以是final, abstract, static(不能在訪問外部類的非靜態(tài)方法和變量)
非靜態(tài)的內(nèi)部類中不能定義靜態(tài)的變量和方法。
實例化內(nèi)部類時先要實例化外部類。可以重寫構(gòu)造方法。利用outer.super()調(diào)用父類構(gòu)造方法來建立內(nèi)外類間的this關(guān)系。
example
class Car
{
class wheel
{
}
}
class planeWheel extends Car.wheel
{
planeWheel(Car car)
{
Car.super();
}
public static void main(String[] args)
{
Car car = new Car();
PlaneWheel pw =new Planewheel();
}
}
接口中的方法和變量都是public abstract的,實現(xiàn)方法時不能低于此訪問權(quán)限
匿名的內(nèi)部類,