当前位置: 代码迷 >> Java相关 >> 接口多态性
  详细解决方案

接口多态性

热度:713   发布时间:2010-04-20 10:17:22.0
接口多态性
interface Scaleable
{
    double area();
   void scale(double proportion);
}

class Circle implements Scaleable
{
    private double radius;
   
    public Circle(double radius)
    {
        this.radius=radius;
    }
   
    public void setRadius(double radius)
    {
        this.radius=radius;
    }
   
    public double getRadius()
    {
        return radius;
    }
   
    public double area()
    {
        return Math.PI*radius*radius;
    }

     public void scale(double proportion)    //    放缩圆的方法
    {
        setRadius(proportion*getRadius());
    }
   
}


public class Test11
{
  public static void main(String args[])
  {
      Scaleable s=new Circle(10);
      s.scale(2);
      s.getRadius();     //   为什么不能用接口引用访问Circle的getRadius()方法呢???
     System.out.println(s.area()+"放缩后的半径是:"+s.getRadius()); // 通过接口引用访问对象所在类的方法,scale(),area()都可以被访问,为什么getRadius()就不能被访问呢
   }
  
}

搜索更多相关的解决方案: 多态  接口  

----------------解决方案--------------------------------------------------------
因为你在接口没有声明该方法。假如你要让接口可以使用getRadius()方法,那么必须修改接口
interface Scaleable
{
    double area();
    void scale(double proportion);
    public double getRadius();
}

----------------解决方案--------------------------------------------------------
getRadius()方法是你在实现接口的类中自己新加的一个方法,在接口中尼并没有声明!你可以直接New一个Circle对象进行操作!
楼上说的正是!
实现接口的类要实现接口中的每个抽象方法,否则必须声明为抽象类!
----------------解决方案--------------------------------------------------------
  相关解决方案