× Giới thiệu Lịch khai giảng Tin tức Sản phẩm học viên

Lớp trừu tượng trong Java - Nắm vững khái niệm về abstract trong Java

05/07/2021 02:17

Chúng ta biết rằng lớp trừu tượng (abstract) là lớp không thực thi bất kỳ điều gì nhưng lại được sử dụng như một khuôn mẫu hoặc kế hoạch cho các lớp khác. Các lớp trừu tượng là yêu cầu cơ bản nhất để đạt được tính trừu tượng trong Java. Chúng ta sẽ tìm hiểu về khái niệm về các lớp trừu tượng trong Java cùng các quy tắc và ví dụ cụ thể ngay trong bài viết dưới đây.

Khái niệm lớp trừu tượng trong Java

Lớp trừu tượng trong Java là lớp đại diện cho một khái niệm và không thể tạo đối tượng của nó. Một lớp có chứa ít nhất một phương thức trừu tượng (phương thức không có bất kỳ phần thực thi hoặc thân phương thức nào) được gọi là lớp trừu tượng.

Một lớp trừu tượng được khai báo với sự trợ giúp của một từ khóa trừu tượng. Luôn có một phương thức khởi tạo mặc định trong một lớp trừu tượng, nó cũng có thể có một phương thức khởi tạo tham số hóa.

Cách khai báo một lớp trừu tượng trong Java

Để khai báo một lớp trừu tượng trong Java, chúng ta sử dụng từ khóa abstract. Cú pháp như sau:

abstract class ClassName

{

  //class body

}

 

Kế thừa của lớp trừu tượng trong Java

Chúng ta không thể tạo ra các đối tượng hoặc thể hiện từ các lớp trừu tượng, nhưng chúng có thể được phân lớp. Nghĩa là, để truy cập các phương thức bên trong các lớp trừu tượng, chúng ta phải thực hiện kế thừa chúng. 

Ví dụ:

//abstract parent class

abstract class Person

{

  public void displayInfo()

  {

    System.out.println("I am a person.");

  }

}

Inheritance of abstract class

class Student extends Person

{




}

class AbstractClassDemo

{

  public static void main(String[] args)

  {

    //Creating object of the child class

    Student obj1 = new Student();




    Accessing member of the abstract class

    obj1.displayInfo();

  }

}

Output

I am a person

 

Trong ví dụ trên, chúng ta đã tạo một lớp trừu tượng Person. Chúng ta không thể tạo các đối tượng của lớp trừu tượng Person này và cũng không thể truy cập trực tiếp vào displayInfo (). Để truy cập phương thức displayInfo () của Person, chúng ta phải  mở rộng một lớp con là Student từ Person. Sau đó, chúng ta tạo đối tượng obj1 của lớp con này và sử dụng đối tượng này để truy cập phương thức displayInfo ().

Ghi đè các lớp trừu tượng trong Java

Trong Java, bắt buộc phải ghi đè các phương thức trừu tượng của lớp cha trong lớp con của nó vì lớp dẫn xuất mở rộng các phương thức trừu tượng của lớp cơ sở. Nếu chúng ta không ghi đè các phương thức trừu tượng trong các lớp con thì sẽ xảy ra lỗi biên dịch. Do đó, lớp con cần ghi đè các phương thức trừu tượng của lớp cơ sở của nó.

Ví dụ:

package com.techvidvan.abstractclass;

abstract class Parent

{

  //concrete method

  public void display1()

  {

    System.out.println("Concrete method of parent class");

  }

  //abstract method

  abstract public void display2();

}

class Child extends Parent

{

  // Must Override this method while extending Parent class

  public void display2()

  {

    System.out.println("Overriding abstract method");

  }




  //Overriding concrete method is not compulsory

  public void display1()

  {

    System.out.println("Overriding concrete method");

  }

}

public class AbstractClassDemo

{

  public static void main(String[] args)

  {

    Child obj = new Child();

    obj.display2();

    obj.display1();

  }

}

Output

Overriding abstract method

Overriding concrete method

>>> Đọc thêm: Generics trong Java - Lợi ích của việc sử dụng Generics trong Java

Các phương thức lớp trừu tượng trong Java

  • Các phương thức trừu tượng là các phương thức không có triển khai. Chúng không chứa bất kỳ câu lệnh phương thức nào.
  • Các lớp con của lớp trừu tượng này phải cung cấp việc triển khai các phương thức trừu tượng kế thừa này.
  • Một phương thức trừu tượng được khai báo với một từ khóa trừu tượng .
  • Khai báo một phương thức trừu tượng phải kết thúc bằng dấu chấm phẩy ;

Cú pháp để khai báo phương thức trừu tượng

access-specifier abstract return-type method-name();

Tại sao không thể tạo đối tượng của một lớp trừu tượng trong Java

Chúng ta không thể khởi tạo một lớp trừu tượng bởi vì các lớp này là các lớp không hoàn chỉnh, không có triển khai. Các lớp trừu tượng có các phương thức trừu tượng không có thân phương thức.

Giả sử, nếu Java cho phép bạn tạo một đối tượng của lớp này và sử dụng đối tượng này nếu ai đó gọi phương thức trừu tượng thì điều gì sẽ xảy ra? Sẽ không có bất kỳ triển khai thực tế nào của phương thức được gọi!

Ngoài ra, một lớp trừu tượng cũng giống như một cấu trúc chung hoặc một khuôn mẫu phải được mở rộng bởi các lớp con để thực hiện.

>>> Đọc thêm: Wildcard trong Java - Khái niệm quan trọng về Wildcard trong Java

Truy cập hàm tạo của lớp trừu tượng trong Java

Vì các hàm tạo của các lớp không trừu tượng có thể được truy cập, chúng ta cũng có thể truy cập vào hàm tạo của một lớp trừu tượng. Chúng ta truy cập hàm tạo từ lớp con với sự trợ giúp của từ khóa super . Ví dụ,

//parent class

abstract class Parent

{

  //constructor of the abstract class

  Parentl()

  {

    ….

  }

}

//child class

class Child extends Parent

{

  //constructor of the child class

  Child()

  {

    //Accessing the constructor of the abstract class using the super keyword

    super();

    ….

  }

}

Để truy cập hàm tạo của lớp cha, chúng ta sử dụng super () bên trong hàm tạo của Lớp con. Lưu ý rằng câu lệnh super phải luôn là câu lệnh đầu tiên của hàm tạo của lớp con.

>>> Tham khảo khóa học lập trình Java

Quy tắc sử dụng lớp trừu tượng trong Java

Có một số quy tắc mà bạn nên nhớ khi làm việc với các lớp trừu tượng.

  1. Chúng ta có thể khai báo một lớp trừu tượng bằng cách sử dụng từ khóa trừu tượng - abstract.
  2. Nó có thể có các phương thức trừu tượng cũng như cụ thể (không trừu tượng).
  3. Một lớp trừu tượng có thể có các phương thức tĩnh.
  4. Một lớp trừu tượng cũng có thể có các hàm tạo..
  5. Chúng ta không thể khởi tạo hoặc tạo một đối tượng của một lớp trừu tượng.
  6. Một lớp dẫn xuất từ ​​lớp cha trừu tượng phải triển khai mỗi phương thức được khai báo là trừu tượng trong lớp cha. Nếu không, sẽ có một lỗi biên dịch.
  7. Nếu lớp dẫn xuất không triển khai tất cả các phương thức trừu tượng của một lớp cha trừu tượng, thì lớp dẫn xuất cũng phải khai báo chính nó là trừu tượng.

Kết luận: Trong bài viết này chúng ta đã tìm hiểu khái niệm cơ bản về Lớp trừu tượng của Java cùng với nhu cầu, sự kế thừa, các phương thức và quy tắc của Lớp trừu tượng. Hy vọng bạn có thể hiểu rõ về lớp trừu tượng trong Java và tận dụng lớp trừu tượng này trong quá trình làm các dự án sắp tới. Tìm hiểu thêm về Java và các ngôn ngữ lập trình khác qua các khóa học lập trình tại Viện công nghệ thông tin T3H.