Hi mọi người ạ! Em mới học JAVA và OOP phần kế thừa, hôm nay học thì bị kẹt ở đoạn methods overrring.
Em có 1 super-class Shape (String name, double x, double y)
public class Shape {
private String _name;
private double _x, _y;
public Shape(String name, double x) {
this._name = name;
this._x = x;
}
public Shape(String name, double x, double y) {
this._name = name;
this._x = x;
this._y = y;
}
// em muốn kế thừa hàm getName() và getArea() từ shape qua 3 sub-class kia
public String getName() {
return _name;
}
public double getArea() {
System.out.println("Shape's area is unknown at this moment!");
return 0;
}
}
và 3 sub-class Circle, Triangle, Rectangle kế thừa toàn bộ instance variables từ class Shape. Trong class Shape đó em có 2 methods là getName() và getArea()
public class Circle extends Shape {
private String _name;
private double _radius;
public Circle(String name, double radius) {
super(name, radius);
}
@Override
public String getName() {
return super.getName();
}
@Override
public double getArea() {
return (_radius * _radius) * Math.PI;
}
}
public class Rectangle extends Shape {
private String _name;
private double _height, _width;
public Rectangle(String name, double height, double width) {
super(name, height, width);
}
@Override
public String getName() {
return super.getName();
}
@Override
public double getArea() {
return _height * _width;
}
}
public class Triangle extends Shape{
private String _name;
private double _height, _base;
public Triangle(String name, double height, double base) {
super(name, height, base);
// this._name = name;
}
@Override
public String getName() {
return super.getName();
}
@Override
public double getArea() {
return (_base/2) * _height;
}
}
và đây là hàm main của em. Em đã thử implement tuy nhiên lúc print ra thì lại sai kết quả. Em ko biết sai ở đâu ạ. Ai biết có thể chỉ cho em chỗ sai đc ko ạ? Em cảm ơn ạ.
public class Ex3 {
public static void main(String[] args) {
Shape[] arrShape = {
new Circle("Circle", 5), // 78.5
new Rectangle("Rectangle", 3, 4), // 12.0
new Triangle("Triangle", 5, 5), // 12.5
};
double sum = 0;
for(Shape a: arrShape) {
System.out.println(a.getArea() + " " + a.getName());
}
System.out.println(sum); // 103.0
}
}