Java 这是一个实现多态性的小程序(有错),大家帮忙看看有什么错误

来源:百度知道 编辑:UC知道 时间:2024/05/18 08:25:24
class Object
{
public int innerRadius;

public String color;
public void set(String colour)
{
System.out.println("调用父类设置颜色函数。");
color=colour;
}
public void set(int radius)
{
System.out.println("调用父类设置半径函数。");
innerRadius=radius;
}
public void set(int radius,String colour)
{
System.out.println("调用父类函数,半径、颜色同时设置。");
innerRadius=radius;
color=colour;
}
public void show()
{
System.out.println("调用父类函数。半径:"+innerRadius+"颜色:"+color);
}

}

class Ring extends Object
{
public int outerRadius;
public void set(int radius1,int radius2,String colour)
{
System.out.println("调用子类函数,内半径、外半径、颜色同时设置。");
innerRadius=radius1;
outerRadius=radius2;
color=colour;
}
public void show()//重写父类中的show()
{
System.

大体意思和楼上说的差不多。
楼主写的:Ring samp3=new Ring();
Object samp4=samp3;
就相当于samp4的上转型,好比说:动物samp4=老虎samp3。
这时候samp4虽然指向samp3d ,但是她作为父类不能够调用子类特有的方法。但是samp3可以。可以改为samp3.set(50,60,"Brown");samp3.show();

你写的类Object中,没有定义set(int, int, String)方法。

这里不要误解,你使用了samp4 = samp3。这里的方法掉用,是要看samp4的类型来决定的。