Lớp trừu tượng abstract Shape trong Java



Đề bài: Khai báo lớp Shape là lớp trừu tượng (abstract) như sau:


public abstract class Shape {
    // Phuong thuc truu tuong tinh dien tich
    public abstract double area();

    // Phuong thuc hien thi thong tin
    public String toString() {
        return "Dien tich la: " + area();
    }
}

Xây dựng lớp Rectangle và lớp Circle kế thừa lớp Shape định nghĩa hình chữ nhật và hình tròn.
Yêu cầu kiến thức:

  • Phân tích và xác định đối tượng chương trình từ đối tượng thực tế
  • Xác định các thành phần của các lớp như thuộc tính và phương thức
  • Nắm được các kiến thức về lớp trừu tượng (abstract) và tính chất kế thừa (extends) trong Java

Cấu trúc thư mục:
src
|——BuildClass
   |——Shape.java
   |——Rectangle.java
   |——Circle.java
|——UseClass
   |——MainUse.java

Code tham khảo dưới đây được viết trên JDK ver 8.x:
File Shape.java:


package BuildClass;

public abstract class Shape {
    // Phuong thuc truu tuong tinh dien tich
    public abstract double area();

    // Phuong thuc hien thi thong tin
    public String toString() {
        return "Dien tich la: " + area();
    }
}

File Rectangle.java:


package BuildClass;

public class Rectangle extends Shape {
    // Thuoc tinh
    private double chieuDai;
    private double chieuRong;

    // Phuong thuc
    // Ham khoi tao khong doi so
    public Rectangle() {

    }

    // Ham khoi tao co doi so
    public Rectangle(double chieuDai, double chieuRong) {
        this.chieuDai = chieuDai;
        this.chieuRong = chieuRong;
    }

    // Ham tinh chu vi hinh chu nhat
    public double chuVi() {
        return (this.chieuDai + this.chieuRong) * 2;
    }

    // Viet lai ham tinh dien tich
    @Override
    public double area() {
        return this.chieuDai * this.chieuRong;
    }
}

File Circle.java:


package BuildClass;

public class Circle extends Shape {
    // Thuoc tinh
    private double banKinh;

    // Phuong thuc
    // Ham khoi tao khong doi so
    public Circle() {

    }

    // Ham khoi tao co doi so
    public Circle(double banKinh) {
        this.banKinh = banKinh;
    }

    // Ham tinh chu vi hinh tron
    public double chuVi() {
        return 2 * Math.PI * this.banKinh;
    }

    // Viet lai ham tinh dien tich
    @Override
    public double area() {
        return Math.PI * this.banKinh * this.banKinh;
    }
}

File MainUse.java:


package UseClass;

import BuildClass.Circle;
import BuildClass.Rectangle;
import BuildClass.Shape;

public class MainUse {
    public static void main(String[] args) {
        // Tao mang kieu Shape, khoi tao cac doi tuong Rectangle vaf Circle
        Shape[] arr = {new Rectangle(5, 10), new Circle(4.5)};

        // Hien thi thong tin
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
    }
}


Kết luận:

  • Bạn có thể tham khảo thêm khóa học lập trình C từ cơ bản đến nâng cao. Xem tại đây
  • Bạn có thể tham khảo thêm khóa học Thành thạo lập trình C#. Xem tại đây
  • Bạn có thể tham khảo thêm khóa học Ôn tập OOP cơ bản trong Java. Xem tại đây

Có thể bạn sẽ thích…

Trả lời

EnglishVietnamese