/*
匿名内部类:
1,匿名内部类其实就是内部类的简写格式
2,定义匿名内部类的前提:
内部类必须是继承一个类或者实现接口。
3,匿名内部类的格式: new父类或者接口的(){定义子类的内容}
4,其实匿名内部类就是一个匿名子类对象。而且这个对象有点胖,可以理解
为带内容的对象。
5,匿名内部类中定义的方法最好不要超过三个。
*/
//定义一个接口
interface Inner_1 {
abstract void show();
}
class Outer_1 {
//定义一个函数。匿名内部类在里面实现
public void show() {
new Inner_1() {
public void show() {
System.out.println("Inner_1 show");
}
}.show();
}
/*
根据提示填写内容
根据提示我们可以想到Outer_1类中肯定有一个静态的shouRun()方法
而且在Outer_1调用showRun()方法后运算的结果为一个对象
而因为只有Inner_1类型的对象才可调用show()方法。
所以返回值类型为Inner_1
*/
public static Inner_1 showRun() {
return new Inner_1() {
public void show() {
System.out.println("匿名类.run");
}
};
}
}
class OuterTest {
public static void main(String[] args) {
new Outer_1().show();
//根据提示填写内容
Outer_1.showRun().show();
//问,不继承类也不实现类是否可以写内部类?
//答:可以。可以通过Object类型的对象来实现
new Object() {
public void show() {
System.out.println("Object::::::run");
}
}.show();
}
} |
|