一,什麼是內部類?
將類定義在類中,該類就是類部類.
二,訪問許可權.
內部類可以直接訪問外部類中的成員。
外部類想要訪問內部類,需要建立內部類物件。
三,什麼時候使用內部類。
有a類和b類,當a類想要直接訪問b類中的成員,而b類又需要建立a類的物件來訪問a類中的成員。這時,就將a類定義成b類的內部類。
例子:孫悟空和牛魔王老婆
什麼時候定義內部類呢?
當分析乙個事物時,該事物的內部還有具體的事物,這個具體的事物在使用該事物中的其他成員。
這時就將這個具體的事物用內部類來描述。
比如人體是乙個類,人體有心臟,心臟的功能在直接訪問人體的其他內容。這時就將心臟定義在人體類中,作為內部類存在。
而且內部類通常都不會直接對外提供,都會封裝到外部類中,外部類一般會通過對外提供方法的形式對其進行訪問
記住只有內部類定義在成員位置上,才可以有這些成員修飾符。
class body
public heart getheart()
}class main
四, 內部類使用:在外部使用,必須標示出是哪個類的內部類. 格式:外部類名.內部類名 變數=new 外部類物件.內部類物件
例:outer.inner in = new outer().inner();
但是一般不會這麼用,因為內部類都會被外部類隱藏,通常都是外部類提供方法獲取內部類的物件。
這樣可以對獲取物件可控。通常內部類都會被private私有化。
五,靜態的情況:
當內部類中如果有靜態成員時,該內部類也必須是靜態的。
而靜態內部類只能訪問外部類中的靜態成員。
在執行static內部列方法時,兩種情況。
1,內部類靜態,但是方法沒靜態。
該方法需要被物件呼叫執行。
outer.inner in = new outer.inner();//產生了乙個靜態內部類物件。
in.show();
2,內部類靜態,而且方法也是靜態的。
靜態內部類隨著類檔案的載入就已經存在了,靜態方法隨著內部類的載入也存在了。
這時是不需要物件的。
outer.inner.show();
六,內部類訪問外部類成員細節
記住只有內部類定義在成員位置上,才可以有這些成員修飾符。!!!!!
非靜態的內部類之所以可以直接訪問外部類中的成員,
那是因為內部類中都持有乙個外部類物件引用:外部類名.this
靜態的內部類之所以可以直接訪問外部類中的靜態成員,其實持有的是外部類名。
記住只有內部類定義在成員位置上,才可以有這些成員修飾符。
例子:class outer
}static class inner2
}public static void method2()
public void method()
}七,內部類定義在區域性位置上
記住只有內部類定義在成員位置上,才可以有這些成員修飾符。!!!
區域性內部類不能被修飾符修飾
內部類定義區域性位置上,只能訪問該區域性中的被final修飾的常量
例子:class outer
public void method(final int y)
}new inner().show();}}
class innerclassdemo4
}八,匿名內部類
格式:匿名內部類的格式:
new 父類名或者介面()
匿名內部類其實就是乙個子類匿名物件。這是乙個帶有內容的物件,這個物件有點胖。
例子:bstract class absdemo
class outer}*/
public void method()
}.show();}}
class niminginnerdemo
}
JAVASE 學習筆記 內部類
內部類 在乙個類的內部定義另外乙個類,另外乙個類稱為內部類 內部類的class檔名 外部類 內部類.class 內部類的型別 成員內部類 在外部類的成員位置 區域性內部類 在外部類的區域性位置 內部類的好處 可以直接訪問外部類的所有成員 應用場景 在描述a事物時,a事物內部還維護了另外乙個b事物,且...
JavaSE基礎學筆記 內部類
內部類的應用場景 當描述事物時,事物的內部還有事物,並且這個內部事物要使用外部事物的某些特性,這時把內部事物定義成內部類。內部類與其外部類的訪問規則 1.內部類可以直接訪問外部類的成員。2.外部類要訪問內部類要建立內部類物件。3.內部類可以被private修飾,因為內部類是在其外部類的成員位置上。注...
JavaSE基礎08內部類
在乙個類中定義乙個類,那麼把這種情況稱為內部類。內部類可以訪問外部類的成員,即使外部類用private修飾 私有 外部類想要訪問內部類成員,必須同通過建立內部類物件來訪問內部類的成員。package org.zst.inter class outer1 public void show public...