Lớp và phương thức trừu trượng (Abstract) trong Java

Bài viết sau đây sẽ giúp bạn sáng tỏ về lớp trừu trượng (Abstract Class) và phương thức trừu tượng (Abstract Methods). Đồng thời cũng phân biệt nó với Class và phương thức thông thường.

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

Lớp trừu tượng (Abstract Class) là lớp bị hạn chế. Và không thể dùng để tạo đối tượng (để truy cập được thì phải kế thừa từ lớp khác).

Lớp thông thường khi muốn gọi thì chúng ta sẽ dùng từ khóa new. Tuy nhiên với lớp trừu tượng thì không thể làm được điều này. Thay vào đó phải sử dụng một lớp con để kế thừa (Extends) từ Abstract Class.

Ví dụ:

abstract class myClass {

      // Phương thức trừu tượng
      abstract void method1();

      // Phương thức thường
      void method2() {
        System.out.println("Đây là phương thức thường");
      }
}

Những điều cần chú ý:

  • Lớp trừu tượng được khai báo bằng từ khóa abstract
  • Nó không được khởi tạo
  • Nó cũng có thể có các hàm tạo và các phương thức tĩnh
  • Nó có thể có các phương thức trừu tượng và không trừu tượng

Phương thức trừu tượng

Phương thức trừu tượng (Abstract Method) không có phần thân như phương thức thường.

abstract void Example();

Còn phương thức thường

void display() {
  // Code
}

Ví dụ:

Tạo một tập tin là Cars.java

abstract class Cars {
    abstract void run();
}

Tiếp theo tạo file Ford.java kế thừa Cars

public class Ford extends Cars {

    void run()
   {
        System.out.println("Hành động chạy!");
    }

    public static void main(String[] args) 
    {
        Ford obj = new Ford();
        obj.run();
    }

}

Như ví dụ ở trên ta thấy khi class Ford kế thừa lại lớp Cars thì nó sẽ khai báo lại phương thức run().

Tại sao lại sử lớp và phương thức trừu tượng?

Giả sử chúng ta có một lớp động vật như Chó, Mèo, Lợn. Chúng đều có đặc điểm như hành động là chạy, tiếng kêu, màu lông. Chúng ta không thể khai báo mỗi động vật là một Class như vậy sẽ phải viết rất nhiều code.

Tuy nhiên khi dùng phương thức trừu tượng rồi truyền tham số vào như vậy code sẽ trở nên ngắn gọn, đơn giản hơn.

Ví dụ:

abstract class DongVat {
    abstract void tiengkeu();
    abstract void maulong();
    abstract void sochan();
}

Tiếp theo chúng ta chỉ cần tạo ra Class ConVat để kế thừa lớp DongVat đã khởi tạo.

public class ConVat extends DongVat {

    String tiengkeu;
    String maulong;
    String sochan;
    String tendongvat;
    
    public ConVat(String tendongvat) {
        this.tendongvat = tendongvat;
        System.out.println(this.tendongvat);
    }
    
    void tiengkeu(String tiengkeu) {
        this.tiengkeu = tiengkeu;
        System.out.println(this.tiengkeu);
    }
    
    void maulong(String maulong) {
        this.maulong = maulong;
        System.out.println(this.maulong);
    }
    
    void sochan(String sochan) {
        this.sochan = sochan;
        System.out.println(this.sochan);
    }

    public static void main(String[] args) {

        ConVat obj = new ConVat("Mickey");
        obj.tiengkeu("Ẳng ẳng");
        obj.maulong("Màu đen");
        obj.sochan("4 chân");
    }

}

Với đoạn mã trên bạn chỉ cần truyền đối số là nó sẽ in ra màn hình các đặc điểm của động vật. Như vậy bạn sẽ không cần phải viết lại cho mỗi động vật mà thay vào đó dùng chung cho toàn bộ lớp động vật đó.

Như vậy là chúng ta đã cùng nhau tìm hiểu về lớp trừu tượng và phương thức trừu tượng trong Java. Qua bài viết này bạn đã dần sáng tỏ về lập trình hướng đối tượng (OOP) trong Java rồi đấy.

Related Posts

Cấu trúc dữ liệu và giải thuật: Một cái nhìn tổng quan

Giới thiệu Trong lĩnh vực phát triển phần mềm, cấu trúc dữ liệu và giải thuật là hai khái niệm quan trọng không thể thiếu. Cấu trúc…

Next.js – Khám phá Framework JavaScript tuyệt vời cho phát triển ứng dụng web

Giới thiệu về Next.js Next.js là một framework JavaScript mã nguồn mở và phổ biến được sử dụng để xây dựng các ứng dụng web hiệu suất…

Lisp – Cái nhìn tổng quan về ngôn ngữ lập trình đặc biệt

Lisp là gì? Lisp là một ngôn ngữ lập trình đặc biệt mang đến một cách tiếp cận độc đáo trong việc xử lý thông tin và…

Cách sử dụng đường dẫn tương đối trong HTML

Cách sử dụng đường dẫn tương đối trong HTML

Trang web hiện đại thường bao gồm nhiều tài nguyên như hình ảnh, trang HTML khác, tệp tin CSS và JavaScript. Để liên kết và truy cập…

Bài tập về hàm split trong Python

Chuỗi là một loại dữ liệu phổ biến trong lập trình, và việc xử lý chuỗi là một kỹ năng cần thiết cho các lập trình viên….

Xử lý chuỗi trong Python: Các phương thức cơ bản

Python là một trong những ngôn ngữ lập trình phổ biến nhất hiện nay. Nó được sử dụng rộng rãi trong nhiều lĩnh vực, từ phát triển…