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() {
}
}
}
你还可以有这种骚操作,(抽象)内部类里实现接口
网友评论