成員內部類

image.png

若外部類名與內部類名的成員重名要如何調用?

package mInner;  
  
public class InnerClassTest {  
    public static void main(String[] args) {  
        MyOuter.Inner i = new MyOuter().new Inner();  
        i.show();  
    }  
}  
  
class MyOuter {  
    int num = 10;  
    class Inner {  
        int num = 20;  
        public void show() {  
            int num = 30;  
            System.out.println(num);  //30
            System.out.println(this.num);  //20
				       System.out.println(MyOuter.this.num);  //10
        }  
    }  
}

面試題:
image.png

為何需要學習使用內部類:封裝性更好
image.png

public class Car {  
    private String carName;  
    int carAge;  
    String carColor;  
    public void show(){  
        System.out.println(carName);  
        // System.out.println(engineName) 這是調不到的  
	    // 我想調用engineName怎麼辦
	    // 創建對象!
	    Engine e = new Engine();
	    System.out.println(e.engineName);
        
    }  
    class Engine{  
        String engineName;  
        int engineAge;  
        public void show(){  
            System.out.println(engineName);  
            System.out.println(carName);  //Private也可以
        }
    }}