§8.2匿名类 §8.2.1和子类有关的匿名类 假设Bank是类,那么下列代码就是用Bank的一个 子类(匿名类)创建对象: new Bank(){ 匿名类的类体 匿名类的常用的方式是向方法的参数传值。 void f(Aa){ 上述方法的参数类型是A类,如果希望传递A类的子类对象, 但没有符合要求的子类,那么可以编写匿名类
11 §8.2 匿名类 §8.2.1 和子类有关的匿名类 假设Bank是类,那么下列代码就是用Bank的一个 子类(匿名类)创建对象: new Bank () { 匿名类的类体 }; 匿名类的常用的方式是向方法的参数传值。 void f(A a){ } 上述方法的参数类型是A类,如果希望传递A类的子类对象, 但没有符合要求的子类,那么可以编写匿名类
例8-2 InputAlphabet.java,InputEnglish.java ShowBoard.java,Example8 2.java 例8-2中的ShowBoard类的showMess(InputAlphabet show) 方法的参数是InputAlphabet类型的对象,用户在编写程序时, 希望使用ShowBoard类的对象调用showMess(InputAlphabet show)输出英文字母表和希腊字母表,但系统没有提供输出 希腊字母表的子类,因此用户在主类的main方法中,向 showMess方法的参数传递了一个匿名类的对象,该对象负责 输出希腊字母表。运行效果如图82所示
12 例8-2 InputAlphabet.java , InputEnglish.java ShowBoard.java, Example8_2.java 例8-2中的ShowBoard类的showMess(InputAlphabet show) 方法的参数是InputAlphabet类型的对象,用户在编写程序时, 希望使用ShowBoard类的对象调用showMess(InputAlphabet show)输出英文字母表和希腊字母表,但系统没有提供输出 希腊字母表的子类,因此用户在主类的main方法中,向 showMess方法的参数传递了一个匿名类的对象,该对象负责 输出希腊字母表。运行效果如图8.2所示
例8-2 InputAlphabet.java,InputEnglish.java ShowBoard.java,Example8 2.java abstract class Inputalphabet{ public abstract void input(); public class InputEnglish extends InputAlphabet{ public void input() for(char c='a';c<=z';c++) System.out.printf("%3c",c); public class ShowBoard void showMess(InputAlphabet show){ show.input();
例8-2 InputAlphabet.java , InputEnglish.java ShowBoard.java, Example8_2.java abstract class InputAlphabet { public abstract void input(); } public class InputEnglish extends InputAlphabet { public void input() { for(char c='a';c<='z';c++) { System.out.printf("%3c",c); } } } public class ShowBoard { void showMess(InputAlphabet show) { show.input(); } }
例8-2 Example8 2.java public class Example8 2{ public static void main(String args[]){ ShowBoard board=new ShowBoardO); /向参数传递InputAlphabet的子类对象 board.showMess(new InputEnglish()); /∥向参数传递InputAlphabet的匿名子类对象 board.showMess(new InputAlphabet() public void input() {for(char c-=a,c<=o';c+)/输出希腊字母 System.out.printf("%3c",c);
public class Example8_2 { public static void main(String args[]) { ShowBoard board=new ShowBoard(); //向参数传递InputAlphabet的子类对象 board.showMess(new InputEnglish()); //向参数传递InputAlphabet的匿名子类对象 board.showMess(new InputAlphabet() { public void input() { for(char c='α';c<='ω';c++) //输出希腊字母 System.out.printf("%3c",c); } } ); } } 例8-2 Example8_2.java
例8-2 InputAlphabet.java,InputEnglish.java ShowBoard.java,Example8 2.java C:\ch8>java Example8_2 a b c d e f 名 h i j k l 0 中 图8.2和子类有关的匿名类 例8-2中的ShowBoard类的showMess(InputAlphabet show) 方法的参数是InputAlphabet类型的对象,用户在编写程序时, 希望使用ShowBoard类的对象调用showMess(InputAlphabet show)输出英文字母表和希腊字母表,但系统没有提供输出 希腊字母表的子类,因此用户在主类的main方法中,向 showMess方法的参数传递了一个匿名类的对象,该对象负责 输出希腊字母表。运行效果如图82所示。 2025/4/2
2025/4/2 15 例8-2 InputAlphabet.java , InputEnglish.java ShowBoard.java, Example8_2.java 例8-2中的ShowBoard类的showMess(InputAlphabet show) 方法的参数是InputAlphabet类型的对象,用户在编写程序时, 希望使用ShowBoard类的对象调用showMess(InputAlphabet show)输出英文字母表和希腊字母表,但系统没有提供输出 希腊字母表的子类,因此用户在主类的main方法中,向 showMess方法的参数传递了一个匿名类的对象,该对象负责 输出希腊字母表。运行效果如图8.2所示