§8.2匿名类 §8.2.1和子类有关的匿名类 ■匿名类一定是内部类 ■匿名类可以继承父类的方法,也可以重写父类的 方法
◼ 匿名类一定是内部类 ◼ 匿名类可以继承父类的方法,也可以重写父类的 方法 §8.2 匿名类 §8.2.1 和子类有关的匿名类
P167习题8.4
P167 习题8.4
§8.2.2和接口有关的匿名类 假设Computable是一个接口,那么,Java允许直接用接口 名和一个类体创建一个匿名对象,此类体被认为是实现了 Computable接口的类去掉类声明后的类体,称作匿名类。 new Computable(){ 实现接口的匿名类的类体 };/用实现了Computable接口的类(匿名类)创建对象: 如果某个方法的参数是接口类型,那么可以使用接口名和类 体组合创建一个匿名对象传递给方法的参数,对于 void f(ComPutable x)其中的参数x是接口,那么在调用f时, 可以向f的参数x传递一个匿名对象,例如: f(new ComPutable(){ 实现接口的匿名类的类体
18 §8.2.2 和接口有关的匿名类 假设Computable是一个接口,那么,Java允许直接用接口 名和一个类体创建一个匿名对象,此类体被认为是实现了 Computable接口的类去掉类声明后的类体,称作匿名类。 new Computable() { 实现接口的匿名类的类体 } ; //用实现了Computable接口的类(匿名类)创建对象: 如果某个方法的参数是接口类型,那么可以使用接口名和类 体组合创建一个匿名对象传递给方法的参数,对于 void f(ComPutable x) 其中的参数x是接口,那么在调用f时, 可以向f的参数x传递一个匿名对象,例如: f(new ComPutable() { 实现接口的匿名类的类体 })
interface SpeakHello{ 例8-3 Example83.iava void speak(); class HelloMachine{ public void turnOn(SpeakHello hello){ hello.speakO; } public class Example8 3{ public static void main(String args[]){ HelloMachine machine new HelloMachine(); machine.turnOn(new SpeakHelloO public void speak(){ System.out.println("hello,you are welcome!"); machine.turnOn(new SpeakHello(){ public void speak(){ System.out.println("你好,欢迎光临!");
interface SpeakHello { void speak(); } class HelloMachine { public void turnOn(SpeakHello hello) { hello.speak(); } } public class Example8_3 { public static void main(String args[]) { HelloMachine machine = new HelloMachine(); machine.turnOn( new SpeakHello(){ public void speak() { System.out.println("hello,you are welcome!"); } } ); machine.turnOn( new SpeakHello(){ public void speak() { System.out.println("你好,欢迎光临!"); } } ); } } 例8-3 Example8_3.java
例8-3 Example8 3.java 例8-3中,演示了和接口有关的匿名类的用法,运行 效果如图8.3所示。 C:\ch8>java Example8_3 hello,you are welcome! 你好,欢迎光别临! 图8.3和接口有关的匿名类 2025/4/2 20
2025/4/2 20 例8-3 Example8_3.java 例8-3中,演示了和接口有关的匿名类的用法,运行 效果如图8.3所示