学习笔记之内部类(实例内部类)

public class Outer {
    private int i;
    public static int k = 10;
    /*
     * 外部类不能直接访问内部类,可通过一个引用访问(可以访问到内部类中的私有成员)
     */
    public void visitInner(inner inn){
        inn.i = 1;
        inn.j = 2;
    }
    
    
    public class inner{
        private int i;
        private int j;
        
        public void test(){
            System.out.println("kaishi");
        }
        
        /*
         * 如果内部类中的成员名与外部类的成员名相同,内部类中如果直接返回的为内部类中的成员
         */
        public int getI(){
            return i;
        }
        
        public int getJ(){
            return j;
        }
        
        /*
         * 实例内部类中的方法可以返回外部类中的所有成员
         */
        public int getK(){
            return k;
        }
        //返回外部类的成员变量i
        public int getOuterI(){
            return Outer.this.i;
        }
    }
    
    public int getI(){
        return i;
    }
    
}
public class Testinner {

    /**
     * @param args
     */
    public static void main(String[] args) {
        //定义方法一
        //Outer outer = new Outer();
        //Outer.inner inn = outer.new inner();
        //定义方法二
        Outer outer = new Outer();
        inner inn = outer.new inner();
        
        //调用外部类的方法给内部类赋值
        outer.visitInner(inn);
        //输出内部类中的成员变量I
        System.out.println(inn.getI());
        //输出内部类中的成员变量J
        System.out.println(inn.getJ());
        //输出外部类静态属性K
        System.out.println(inn.getK());
        //输出外部类中的I
        System.out.println(inn.getOuterI());
    }

}
原文地址:https://www.cnblogs.com/hnzyyTl/p/4902604.html