android覆盖子类中的函数

时间:2017-07-27 08:19:05

标签: java android

我创建了一个类图,然后是它的两个子类。图超类有一个名为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

3 个答案:

答案 0 :(得分:0)

父类有一个名为

的方法
double are()

子课程

double area()

所以它没有被覆盖

答案 1 :(得分:0)

您在RectangleTriangle覆盖的功能称为area而不是are,如图所示

答案 2 :(得分:0)

您正在调用超类图的are()函数,而不是area()函数的子类。