java 接口和内部类的new相关

2018-07-23  本文已影响0人  codeflame
public interface I {
    public int a=1;
    class A {
        public int aa=2;
        public void ok() {
        }
    }
    abstract class B{
        public void ok() {      
        }
        public abstract void ok2();
    }
}

可见接口中可定义并初始化成员变量,也能定义抽象和非抽象类。接口内的成员a隐藏有final static修饰

    public static void main(String[] args) {
        int a=I.a;
        I.A i1=new I.A();
        I.B i2=new I.B() {
            @Override
            public void ok2() {
            }
        };
    }

访问应该如上。接口中的内部类应该如上来new,new I.B(){}这样是新建一个继承I.B的匿名内部类。


public abstract class C {
    public int a=1;
    class A {
        public int aa=2;
        public void ok() {
        }
    }
    abstract class B{
        public void ok() {
        }
        public abstract void ok2();
    }
}

抽象类也一样,只是其成员变量a没有隐藏的final static修饰。

    public static void main(String[] args) {
        C c1=new C() {
            
        };
        
        C.A c2 =c1.new A();
        C.A c22=(new C() {}).new A();
        
        C.B c3=c1.new B() {
            @Override
            public void ok2() {
            }
        };
        C.B c33=(new C() {}).new B() {
            @Override
            public void ok2() {
            }
        };
    }

各种new。简而言之就是外部类.内部类 变量名=外部类的对象.new 内部类();


public interface I {
    public void m1();
    class A implements I{
        public void m1() {
        }
    }
}

你还可以有这种骚操作,(抽象)内部类里实现接口

上一篇下一篇

猜你喜欢

热点阅读