18. Tính trừu tượng trong lập trình java hướng đối tượng

Tính trừu tượng (abstraction) trong lập trình java hướng đối tượng là khả năng tạo ra các lớp trừu tượng (abstract class) và các phương thức trừu tượng (abstract method) để mô hình hóa và định nghĩa các khái niệm chung, khái quát trong một hệ thống.

Lớp trừu tượng (Abstract class):

  • Lớp trừu tượng là một lớp mà không thể tạo được đối tượng từ nó. Chúng chỉ được sử dụng làm lớp cơ sở cho các lớp con (subclass).
  • Lớp trừu tượng có thể chứa các phương thức trừu tượng và các phương thức thông thường.
  • Một lớp con kế thừa từ lớp trừu tượng phải triển khai (implement) tất cả các phương thức trừu tượng của lớp cha hoặc tự trở thành một lớp trừu tượng.

Ví dụ:

java
abstract class Shape {
    public abstract void draw(); // Phương thức trừu tượng

    public void display() {
        System.out.println("This is a shape");
    }
}

class Circle extends Shape {
    @Override
    public void draw() {
        System.out.println("Drawing a circle");
    }
}

class Rectangle extends Shape {
    @Override
    public void draw() {
        System.out.println("Drawing a rectangle");
    }
}

public class Main {
    public static void main(String[] args) {
        Shape circle = new Circle();
        circle.draw(); // Kết quả: "Drawing a circle"
        circle.display(); // Kết quả: "This is a shape"

        Shape rectangle = new Rectangle();
        rectangle.draw(); // Kết quả: "Drawing a rectangle"
        rectangle.display(); // Kết quả: "This is a shape"
    }
}

Trong ví dụ này, lớp Shape là một lớp trừu tượng, có một phương thức trừu tượng draw() và một phương thức thông thường display(). Lớp CircleRectangle kế thừa từ lớp Shape và triển khai phương thức draw(). Khi tạo đối tượng và gọi phương thức draw()display(), phương thức draw() sẽ được triển khai theo cách khác nhau tùy thuộc vào lớp con cụ thể mà đối tượng đang tham chiếu.

Phương thức trừu tượng (Abstract method):

  • Phương thức trừu tượng là một phương thức mà chỉ có khai báo mà không có định nghĩa (thân hàm).
  • Một lớp trừu tượng phải chứa ít nhất một phương thức trừu tượng.
  • Các lớp con phải triển khai (implement) tất cả các phương thức trừu tượng của lớp cha.

Ví dụ:

java
abstract class Animal {
    public abstract void makeSound(); // Phương thức trừu tượng
}

class Dog extends Animal {
    @Override
    public void makeSound() {
        System.out.println("Dog is barking");
    }
}

class Cat extends Animal {
    @Override
    public void makeSound() {
        System.out.println("Cat is meowing");
    }
}

public class Main {
    public static void main(String[] args) {
        Animal dog = new Dog();
        dog.makeSound(); // Kết quả: "Dog is barking"

        Animal cat = new Cat();
        cat.makeSound(); // Kết quả: "Cat is meowing"
    }
}

Trong ví dụ này, lớp Animal có một phương thức trừu tượng makeSound(). Lớp DogCat kế thừa từ lớp Animal và triển khai phương thức makeSound(). Khi gọi phương thức makeSound() trên các đối tượng của lớp con, phương thức sẽ được triển khai theo cách riêng biệt tùy thuộc vào lớp con cụ thể mà đối tượng đang tham chiếu.

Tính trừu tượng giúp chúng ta mô hình hóa các khái niệm chung và tạo ra một cấu trúc thừa kế linh hoạt trong lập trình hướng đối tượng.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top