匿名类
Java中可以实现一个类包含另一个类,不需要提供任何类名实例化,匿名是不能有名字的类,他们不能被引用,只有在创建时通过new来声明它们。
匿名类继承一个父类:
public class dome2{
public static void main(String[] args) {
pig p=new pig();
p.print1();
}
}
class Animal{ //父类
public void print() {
System.out.println("Animal内部");
}
}
class pig{
public void print1() {
Animal d1=new Animal() { //创建匿名类调用重写print方法
public void print() {
System.out.println("我是匿名类");
}
};
d1.print();
}
}
结果
我是匿名类10
匿名类实现接口:
public class dome2{
public static void main(String[] args) {
pig p=new pig();
p.print1();
}
}
interface Animal{ //接口,不实现
public void print();
}
class pig{
public void print1() {
Animal d1=new Animal() { //创建匿名类重写print方法
public void print() {
System.out.println("我是匿名类");
}
};
d1.print();
}
}
结果
我是匿名类
匿名类的注意事项:
- 匿名类与局部内部类一样,可以访问外部类的所有成员(Java8以后可以访问不带final类型的成员)。
- 匿名内部类中可以使用非静态代码块进行初始化操作。