首页 > 代码库 > java9-9 匿名内部类
java9-9 匿名内部类
1、
匿名内部类
就是内部类的简化写法。
前提:存在一个类或者接口
这里的类可以是具体类也可以是抽象类。
格式:
new 类名或者接口名(){
重写方法;
}
new Xxx()是创建了一个对象,而抽象类和接口不能被new修饰,
所以,这里的东西的本质已经变了
那么,本质是什么呢?
是一个继承了该类或者实现了该接口的子类匿名对象。
1 interface Inter4{ 2 public abstract void show(); 3 public abstract void show2(); 4 } 5 6 class Outer4{ 7 8 public void method(){ 9 10 Inter4 i = new Inter4(){11 //这个匿名内部类是inter接口的匿名实现类 inter i =new Xxx();12 //这段就是Xxx();13 14 //重写接口中的方法15 public void show(){16 System.out.println("show");17 }18 public void show2(){19 System.out.println("show2");20 }21 };22 i.show();23 i.show2(); //调用show()方法24 }25 }26 class InnerClassDemo4 {27 public static void main(String[] args) {28 //调用上面的类29 Outer4 o = new Outer4();30 31 o.method();32 }33 }
2、/*
匿名内部类在开发中的使用
*/
interface Person {
public abstract void study();
}
class PersonDemo {
//接口名作为形式参数
//其实这里需要的不是接口,而是该接口的实现类的对象
public void method(Person p) {
p.study();
}
}
//实现类
class Student implements Person {
public void study() {
System.out.println("好好学习,天天向上");
}
}
class InnerClassTest2 {
public static void main(String[] args) {
//测试
PersonDemo pd = new PersonDemo();
Person p = new Student();
pd.method(p);
System.out.println("--------------------");
//匿名内部类在开发中的使用
//匿名内部类的本质是继承类或者实现了接口的子类匿名对象
pd.method(new Person(){
public void study() {
System.out.println("好好学习,天天向上");
}
});
}
}
3、/*
匿名内部类面试题:
按照要求,补齐代码
interface Inter { void show(); }
class Outer { //补齐代码 }
class OuterDemo {
public static void main(String[] args) {
Outer.method().show();
}
}
要求在控制台输出”HelloWorld”
*/
java9-9 匿名内部类