Phần 1: Hãy xây dựng lớp
theo sơ đồ lớp dưới đây.
Trong đó:
Lớp Shape là lớp
trừu tượng gồm
- 2 thuộc tính là
color và filled.
- Các phương thức
khởi tạo không tham số và có tham số
- Phương thức trừu
tượng: getArea() – tính diện tích một hình bất kỳ, getPerimeter() – tính chu vi
một hình bất kỳ.
- Phương thức
toString() được ghi đè từ lớp Object
Lớp Cirle và
Rectangle là các lớp được kế thừa từ lớp Shape cần cài đặt các phương thức trừu
tượng.
Lớp Square là lớp
được kế từ từ lớp Rectangle
Phần 2: Viết lớp Test chứa
hàm main() để thực hiện các tác vụ như sau:
Shape s1 = new Circle(5.5, "RED", false); // Upcast Circle to Shape
System.out.println(s1);
// which version?
System.out.println(s1.getArea());
// which version?
System.out.println(s1.getPerimeter());
// which version?
System.out.println(s1.getColor());
System.out.println(s1.isFilled());
System.out.println(s1.getRadius());
Circle c1 = (Circle)s1;
// Downcast back to Circle
System.out.println(c1);
System.out.println(c1.getArea());
System.out.println(c1.getPerimeter());
System.out.println(c1.getColor());
System.out.println(c1.isFilled());
System.out.println(c1.getRadius());
Shape s2 = new Shape();
Shape s3 = new Rectangle(1.0, 2.0, "RED", false); // Upcast
System.out.println(s3);
System.out.println(s3.getArea());
System.out.println(s3.getPerimeter());
System.out.println(s3.getColor());
System.out.println(s3.getLength());
Rectangle r1 = (Rectangle)s3; // downcast
System.out.println(r1);
System.out.println(r1.getArea());
System.out.println(r1.getColor());
System.out.println(r1.getLength());
Shape s4 = new Square(6.6); // Upcast
System.out.println(s4);
System.out.println(s4.getArea());
System.out.println(s4.getColor());
System.out.println(s4.getSide());
// Take note that we downcast Shape s4 to Rectangle,
// which is a
superclass of Square, instead of Square
Rectangle r2 = (Rectangle)s4;
System.out.println(r2);
System.out.println(r2.getArea());
System.out.println(r2.getColor());
System.out.println(r2.getSide());
System.out.println(r2.getLength());
// Downcast Rectangle r2 to Square
Square sq1 = (Square)r2;
System.out.println(sq1);
System.out.println(sq1.getArea());
System.out.println(sq1.getColor());
System.out.println(sq1.getSide());
System.out.println(sq1.getLength());
CodeLean.vn
إرسال تعليق