接口多态性
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对象进行操作!
楼上说的正是!
实现接口的类要实现接口中的每个抽象方法,否则必须声明为抽象类!
----------------解决方案--------------------------------------------------------