匿名类
public interface D {
void run();
}
public class B{
@Override
public void run(D d) {
d.run();
}
}
public class cryptonym {
public static void main(String[]args) {
B b=new B();
//调用时使用匿名类创建匿名对象
b.show(new D(
public void run() {
System.out.println("hello");){
}
});
}
}
看到这里是不是还是很疑惑,为什么接口也能new了呢?其实不然,在我们写一个内部类的时候,我们是省略了一些东西的,这样来看是不是就明了许多了?其实本意就是继承了D这个接口之后,重写了其中的方法。只不过我们再代码中对这个类使用的次数不多。所以我们不需要再去写一个继承的类,来加大JVM的工作量。
内部类:
class Outer{
int a=5;
static int b=6;
void show() {
System.out.println("hello world");
}
class Inner{
void use() {
System.out.println(a);//5
System.out.println(b);//6
show();//hello world
}
}
void create() {
new Inner().use();
}
}
public class Demo {
public static void main(String[] args) {
new Outer().create();
Outer.Inner oi=new Outer().new Inner();
oi.use();
}
}