美文网首页
22 静态内部类

22 静态内部类

作者: KeDaiBiaO1 | 来源:发表于2017-12-18 10:34 被阅读0次
    一般 外围类访问静态内部类的方法是:

    静态内部类就像一个外围类的静态成员 ,可以实例化它 通过内部类的构造方法初始化内部类, 然后调用里面的方法

    内部类访问外围类
    1. 静态内部类访问外围类:
      可以访问外围类的所有成员,包括私有的成员。
    2. 非静态内部类访问外围类:
      可以访问外围类的方法,也可以使用修饰过的(?)this方法 来获取外围实例的引用。
    优点:
    1. 静态内部类的实例可以独立于外围类实例之外
      这样就不会消耗过多内存。而非静态内部类必须要有一个关联的外围类实例,也就是 每个内部非静态类实例都要有相关联的外围类实例

    一般内部类只供外围类访问(不对)
    Map 的 Entry 类就是可以供其他类使用。

    1. 外围类访问(非)静态内部类
      都可以通过实例化内部类,获取内部类的实例之后,通过实例访问内部类
        public void unStatic() {
            //外围类访问内部非静态类
            Inner22 inner22 = new Inner22();
            inner22.member();
        }
    
        public void get1Inner(){
            //外围类访问静态内部类
            privateInner = new PrivateInner();
            boolean afalse = privateInner.getFalse();
            System.out.println(afalse);
        }
    
    
    1. 静态内部类访问外围类的静态成员
        private static class PrivateInner {
    
            PrivateInner(){
                get1();
            }
            int get1(){
                //静态内部类访问外围类的   静态成员 one  但是不能访问非静态的成员
                System.out.println("get1");
                return one;
            }
            boolean getFalse(){
                return false;
            }
        }
    
    1. 非静态内部类访问外围类的变量成员和方法
        public class Inner22{
            public Inner22(){
    //            this(); //不可以
                //2种方法访问   外围类
                //1 实例化外围类
                //2 使用OutterClassName.this.methodName();
                Item22 item22 = new Item22();
                System.out.println(item22.toString());
    //第二种方法  获取外围类this引用
    //            Item22.this.toString();
            }
            public void member(){
                System.out.println("inner22-unStatic---" + one);
            }
        }
    

    相关文章

      网友评论

          本文标题:22 静态内部类

          本文链接:https://www.haomeiwen.com/subject/leupwxtx.html