Java語言基礎:內部類 – JAVA編程語言程序開發技術文章

1.  普通內部類
普通內部類的一個最簡單的例子:
view plaincopy to clipboardprint?
// 外部類  
class OutterClass {  
    // 內部類  
    public class InnerClass {  
        private int i = 0;  
        public int getInt(){  
            return i;  
        }  
    }  
    public void proc(){  
        InnerClass inClass = new InnerClass();  
        System.out.println(inClass.getInt());  
    }  
}  
   
public class Main {      
    public static void main(String[] args) {  
        OutterClass outClass = new OutterClass();  
        outClass.proc();  
    }  

// 外部類
class OutterClass {
    // 內部類
    public class InnerClass {
        private int i = 0;
        public int getInt(){
            return i;
        }
    }
    public void proc(){
        InnerClass inClass = new InnerClass();
        System.out.println(inClass.getInt());
    }
}
 
public class Main {   
    public static void main(String[] args) {
        OutterClass outClass = new OutterClass();
        outClass.proc();
    }
}
外部類可以訪問內部類的私有成員,內部類也可以訪問外部類的私有成員:
view plaincopy to clipboardprint?
// 外部類  
class OutterClass {  
    private int mOut = 10;  
    // 內部類  
    public class InnerClass {  
        private int mIn = 0;  
        public void printOutPrivate(){  
            // 直接打印外部類的成員  
            System.out.println(mOut);  
        }  
    }  
    public void printInPrivate(){  
        InnerClass inClass = new InnerClass();  
        // 直接打印內部類的私有成員  
        System.out.println(inClass.mIn);  
    }  
    public void printOutPrivate(){  
        InnerClass inClass = new InnerClass();  
        inClass.printOutPrivate();  
    }  
}  
   
public class Main {      
    public static void main(String[] args) {  
        OutterClass outClass = new OutterClass();  
        outClass.printInPrivate();  
        outClass.printOutPrivate();  
    }  

// 外部類
class OutterClass {
    private int mOut = 10;
    // 內部類
    public class InnerClass {
        private int mIn = 0;
        public void printOutPrivate(){
            // 直接打印外部類的成員
            System.out.println(mOut);
        }
    }
    public void printInPrivate(){
        InnerClass inClass = new InnerClass();
        // 直接打印內部類的私有成員
        System.out.println(inClass.mIn);
    }
    public void printOutPrivate(){
        InnerClass inClass = new InnerClass();
        inClass.printOutPrivate();
    }
}
 
public class Main {   
    public static void main(String[] args) {
        OutterClass outClass = new OutterClass();
        outClass.printInPrivate();
        outClass.printOutPrivate();
    }
}
如果外部類的成員變量與內部類的成員變量名字相同,當內部類要訪問外部類的該成員時,可以使用“OutClass.this.mem”來區分:
view plaincopy to clipboardprint?
// 外部類  
class OutterClass {  
    private int mMem = 10;  
    // 內部類  
    public class InnerClass {  
        private int mMem = 0;  
        public void printOutPrivate(){  
            // 直接打印外部類的成員  
            System.out.println(OutterClass.this.mMem);  
        }  
    }  

// 外部類
class OutterClass {
    private int mMem = 10;
    // 內部類
    public class InnerClass {
        private int mMem = 0;
        public void printOutPrivate(){
            // 直接打印外部類的成員
            System.out.println(OutterClass.this.mMem);
        }
    }
}
要創建普通內部類,必須先創建相應的外部類:
view plaincopy to clipboardprint?
// 外部類  
class OutterClass {  
    private int mMem = 10;  
    // 內部類  
    public class InnerClass {  
        private int mMem = 0;  
        public void printOutPrivate(){  
            // 直接打印外部類的成員  
            System.out.println(OutterClass.this.mMem);  
        }  
 &nb

發佈留言