JAVA新手入门(8)
3256 点击·0 回帖
![]() | ![]() | |
![]() | } class 堆 { Computerable 底; double 高; 堆(Computerable 底,double 高) { this.底=底; this.高=高; } void 换底(Computerable 底) { this.底=底; } public double 求体积() { return (底.求面积()*高)/3.0; } } public class E { public static void main(String args[]) { 堆 zui; Computerable bottom;//声明接口变量 bottom=new 梯形(2.0,7.0,10.7); //回调 System.out.println("梯形的面积"+bottom.求面积()); zui=new 堆(bottom,30); System.out.println("梯形底的堆的体积"+zui.求体积()); bottom=new 圆形(10); System.out.println("半径是10的圆的面积"+bottom.求面积()); zui.换底(bottom); System.out.println("圆形底的堆的体积"+zui.求体积()); } } [/code] 上面的例子明白后或者理解了什么时接口回调,再讨论下"接口做参数"的概念 如果准备给一个方法的参数传递一个值,可能希望该方法的参数的类型时都不了类型,这样就可以想该参数传递byte int long float double类型的数据. 如果一个方法的参数时接口类型,就可以将任何实现改接口类的实例传递给该接口参数,那么接口参数就可以回调类实现的接口方法. 比如上面的例子中堆那个类, 复制代码 class 堆 { Computerable 底;//声明接口类型变量 double 高; 堆(Computerable 底,double 高) //方法的参数类型是接口 { this.底=底; this.高=高; } void 换底(Computerable 底) { this.底=底; } public double 求体积() { return (底.求面积()*高)/3.0;//"底"是接口类型的变量怎么能使用求面积的方法呢,说明了肯定是接口回调,即传进来的参数是一个被对象赋过值的接口变量,才使得此接口变量可以使用被类实现的方法 } } 如果还是不太明白过程,把下面的程序理解就行了 [code] interface SpeakHello //接口 { void speakHello(); } class Chinese implements SpeakHello//使用接口 { public void speakHello() { System.out.println("中国人习惯问候语:你好,吃饭了吗? "); } } class English implements SpeakHello//使用接口 { public void speakHello() { System.out.println("英国人习惯问候语:你好,天气不错 "); } } class KindHello { public void lookHello(SpeakHello hello)//接口做参数 { hello.speakHello();//被赋值了的接口(回调后的接口)就可以使用被类实现了的方法speakHello(); } | |
![]() | ![]() |