Masoud Masoud Masoud Masoud - 1 year ago 50
Android Question

android Override a function in subclass

I make a class Figure then two subclasses from it. Figure super class have a method named are(). this is the all class.

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;
}
}


to easy print outpute I make

public void toastM(String str) {
Toast.makeText(getApplicationContext(), str, Toast.LENGTH_SHORT).show();
}


now I use this code

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());


expected values are 45 40 0
but it come 0 0 0

Answer Source

The parent class has a method called

double are()

the child classes

double area()

so it's not overridden

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download