我创建了一个类图,然后是它的两个子类。图超类有一个名为are()的方法。这是全班。
public class Figure
{
public double a, b;
public Figure(double a,double b) {
this.a = a;
this.b = b;
}
public double are() {
return 0;
}
}
public class Rectangle extends Figure
{
Rectangle(double a, double b) {
super(a,b);
}
double area (){
return this.a*this.b;
}
}
class Triangle extends Figure
{
Triangle(double a, double b) {
super(a,b);
}
// override area for right triangle
double area () {
return a * b / 2;
}
}
轻松打印输出我做
public void toastM(String str) {
Toast.makeText(getApplicationContext(), str, Toast.LENGTH_SHORT).show();
}
现在我使用此代码
Figure f = new Figure(10, 10);
Rectangle r = new Rectangle(9, 5);
Triangle t = new Triangle(10, 8);
Figure figref;
figref = r;
toastM("are..... " + figref.are());
figref = t;
toastM("are..... " + figref.are());
figref = f;
toastM("are..... " + figref.are());
预期值为45 40 0 但它来了0 0 0
答案 0 :(得分:0)
父类有一个名为
的方法double are()
子课程
double area()
所以它没有被覆盖
答案 1 :(得分:0)
您在Rectangle
和Triangle
覆盖的功能称为area
而不是are
,如图所示
答案 2 :(得分:0)
您正在调用超类图的are()函数,而不是area()函数的子类。