java內部類和外部類相關訪問總結
阿新 • • 發佈:2019-07-04
內部類的作用:
- 內部類可以很好的實現功能隱藏,可以新增private、protected等許可權控制
- 可以避免修改介面而實現同一個類中兩種同名方法的呼叫
- 可是實現多重繼承(重要)
內部類和外部類相互呼叫方式:
一:非靜態內部類
內部類呼叫外部類
- 1.非靜態內部類,不能存在靜態方法
- 2.非靜態方法,呼叫外部類的非靜態方法、靜態方法都可以直接呼叫
外部類呼叫內部類
- 1.非靜態方法,呼叫內部的非靜態方法 new Inner().innerMethod();
- 2.靜態方法,呼叫內部類的非靜態方法 new Outer().new Inner().innerMethod();
二:靜態內部類
內部類呼叫外部類
- 1.非靜態、靜態方法,呼叫靜態方法直接呼叫
- 2.非靜態、靜態方法,呼叫非靜態方法 new Outer().outMethod();
外部類呼叫內部類
- 1.非靜態、靜態方法,呼叫非靜態方法 new Outer.StaticInner().innerMethod();
- 2.非靜態、靜態方法,呼叫靜態方法 Outer.StaticInner.innerStaticMethod();
**示例程式碼
public class Outer {
private void outMethod(){
System.out.println("i am out non-static method");
new Inner().innerMethod();
new Outer.StaticInner().innerMethod();
Outer.StaticInner.innerStaticMethod();
}
private static void outStaticMethod(){
System.out.println("i am out static method");
new Outer().new Inner().innerMethod();
new Outer.StaticInner().innerMethod();
Outer.StaticInner.innerStaticMethod();
}
class Inner{
private void innerMethod(){
System.out.println("i am inner non-static method");
outMethod();
outStaticMethod();
}
// //error non-static class canot have static cmethod
// private static void innerStaticMethod(){
// System.out.println("i am inner static method");
// }
}
static class StaticInner{
private void innerMethod(){
System.out.println("i am staticinner non-static method");
outStaticMethod();
new Outer().outMethod();
}
private static void innerStaticMethod(){
System.out.println("i am staticinner static method");
outStaticMethod();
new Outer().outMethod();