灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:2596回复:0

[系统教程]JAVA新手入门(8)

楼主#
更多 发布于:2012-09-08 08:08


}
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();                  
   }

喜欢0 评分0
游客

返回顶部