面向对象(静态成员内部类的调用)

class beyond{
    public static void main(String []args){
        //外部类名.内部类名 对象名 = 外部类名.内部类对象(new 内部类名)
        /*Outer.Inner yy = Outer.new Inner(); 类里面有个非静态方法,需要new创建Inner对象;
        正常的形式是这样的,但是我们习惯将new放在前面即以下形式*/
        Outer.Inner yy = new Outer.Inner();
        yy.method();
        Outer.Inner2.print();//一路  类名.调用  即可;
    }
}

class Outer{
    static class Inner{
        public void method(){
            System.out.println("method");
        }
    }
    static class Inner2{
        public static void print(){
            System.out.println("print");
        }
    }
}

例题:

要求:用已知的变量,在控制台输出30,20,10.

class Test1_InnerClass{
    public static void main(String [] args){
        Outer.Inner yy = new Outer().new Inner();
        yy.show();
    }
}
//内部类之所以能获取到外部类的成员,是因为它能获取到外部类的引用外部类名.this;
class Outer{
    public int num = 10;
    class Inner{
        public int num = 20;
        public void show(){
            int num = 30;
            System.out.println(num);//局部变量num=30;
            System.out.println(this.num);//成员变量num=20;
            System.out.println(Outer.this.num);//外部类的成员num=10;
        }
    }
}

猜你喜欢

转载自blog.csdn.net/qq_41264055/article/details/80141051