| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 499 人关注过本帖
标题:接口多态性
只看楼主 加入收藏
小情歌
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2010-3-18
结帖率:100%
收藏
 问题点数:0 回复次数:2 
接口多态性
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()就不能被访问呢
   }
  
}

搜索更多相关主题的帖子: 多态 接口 
2010-04-20 10:17
linjx0123
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:279
专家分:1362
注 册:2006-4-7
收藏
得分:0 
因为你在接口没有声明该方法。假如你要让接口可以使用getRadius()方法,那么必须修改接口
interface Scaleable
{
    double area();
    void scale(double proportion);
    public double getRadius();
}
2010-04-20 12:05
xudongcsharp
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:129
专家分:156
注 册:2009-5-31
收藏
得分:0 
getRadius()方法是你在实现接口的类中自己新加的一个方法,在接口中尼并没有声明!你可以直接New一个Circle对象进行操作!
楼上说的正是!
实现接口的类要实现接口中的每个抽象方法,否则必须声明为抽象类!
2010-04-20 19:11
快速回复:接口多态性
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.034177 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved