2. 匿名类
和子类有关的匿名类
public class Example7_2 {
public static void main(String[] args) {
ShowBoard board = new ShowBoard();
board.showMess(new OutputEnglish());
board.showMess(new OutputAlphabet() {
public void output() {
for (char c = 'α'; c <= 'β'; c++) {
System.out.printf("%3c", c);
}
}
});
}
}
和接口有关的匿名类
interface SpeakHello{
void speak();
}
class HelloMachine{
public void turnOn(SpeakHello hello){
hello.speak();
}
}
public class Example7_3 {
public static void main(String[] args) {
HelloMachine machine =new HelloMachine();
machine.turnOn(new SpeakHello() {
@Override
public void speak() {
System.out.println("你好,欢迎光临!");
}
});
}
}
自己的理解:如何理解匿名类
匿名类就是有父类,但是没有具体写清楚子类是什么(即子类姓甚名谁);匿名类还可以是有接口,但是没有说明白实现接口的类(即实现接口的类姓甚名谁没有说清)
但又需要使用子类或者实现接口的类,显得非常boring,我们就可以在有了父类或者接口时,创建一种代替子类或者实现接口的类的 “匿名类”
其写法可以是: newA(){类体} //A在这里是父类或者接口
为什么这么些呢?(这里拿子类举例) 因为在创建子类的同时,用的实际上是父类的构造方法,前面有讲过,用的是super(),然后类体就是子类自己写的类体,里面当然可以放重写的方法
接口与其类似。