Phương thức và lớp trừu tượng trong Java

Trong hướng dẫn này, chúng ta sẽ tìm hiểu về các lớp và phương thức trừu tượng của Java với sự trợ giúp của các ví dụ. Chúng ta cũng sẽ tìm hiểu về tính trừu tượng trong Java.

Lớp trừu tượng Java

Lớp trừu tượng trong Java không thể được khởi tạo (chúng ta không thể tạo các đối tượng của lớp trừu tượng). Chúng tôi sử dụng abstracttừ khóa để khai báo một lớp trừu tượng. Ví dụ,

// create an abstract class
abstract class Language {
  // fields and methods
}
...

// try to create an object Language
// throws an error
Language obj = new Language(); 

Một lớp trừu tượng có thể có cả phương thức thông thường và phương thức trừu tượng. Ví dụ,

abstract class Language {

  // abstract method
  abstract void method1();

  // regular method
  void method2() {
    System.out.println("This is regular method");
  }
}

Để biết về các phương thức không trừu tượng, hãy truy cập các phương thức Java . Sau đây, chúng ta sẽ tìm hiểu về các phương thức trừu tượng.

Phương pháp trừu tượng Java

Một phương thức không có phần thân của nó được gọi là một phương thức trừu tượng. Chúng tôi sử dụng cùng một abstracttừ khóa để tạo các phương thức trừu tượng. Ví dụ,

abstract void display();

Đây, display()là một phương pháp trừu tượng. Phần thân của display()được thay thế bằng ;.

Nếu một lớp chứa một phương thức trừu tượng, thì lớp đó sẽ được khai báo là trừu tượng. Nếu không, nó sẽ tạo ra một lỗi. Ví dụ,

// error
// class should be abstract
class Language {

  // abstract method
  abstract void method1();
}

Ví dụ: Lớp và phương pháp trừu tượng Java

Mặc dù không thể khởi tạo các lớp trừu tượng, nhưng chúng ta có thể tạo các lớp con từ nó. Sau đó, chúng ta có thể truy cập các thành viên của lớp trừu tượng bằng cách sử dụng đối tượng của lớp con. Ví dụ,

abstract class Language {

  // method of abstract class
  public void display() {
    System.out.println("This is Java Programming");
  }
}

class Main extends Language {

  public static void main(String[] args) {
    
    // create an object of Main
    Main obj = new Main();

    // access method of abstract class
    // using object of Main class
    obj.display();
  }
}

Đầu ra

This is Java programming

Trong ví dụ trên, chúng ta đã tạo một lớp trừu tượng có tên là Ngôn ngữ . Lớp chứa một phương thức thông thường display().

Chúng ta đã tạo lớp Main kế thừa lớp trừu tượng. Lưu ý tuyên bố,

obj.display();

Ở đây, obj là đối tượng của lớp con Main . Chúng ta đang gọi phương thức của lớp trừu tượng bằng cách sử dụng đối tượng obj .

Thực hiện các phương pháp trừu tượng

Nếu lớp trừu tượng bao gồm bất kỳ phương thức trừu tượng nào, thì tất cả các lớp con được kế thừa từ lớp cha trừu tượng phải cung cấp việc triển khai phương thức trừu tượng. Ví dụ,

abstract class Animal {
  abstract void makeSound();

  public void eat() {
    System.out.println("I can eat.");
  }
}

class Dog extends Animal {

  // provide implementation of abstract method
  public void makeSound() {
    System.out.println("Bark bark");
  }
}

class Main {
  public static void main(String[] args) {

    // create an object of Dog class
    Dog d1 = new Dog();

    d1.makeSound();
    d1.eat();
  }
}

Đầu ra

Bark bark
I can eat.

Trong ví dụ trên, chúng ta đã tạo một lớp trừu tượng Animal . Lớp chứa một phương thức trừu tượng makeSound()và một phương thức không trừu tượng eat().

Chúng tôi đã kế thừa một lớp con Chó từ lớp con Động vật . Ở đây, lớp con Dog cung cấp cách triển khai cho phương thức trừu tượng makeSound().

Sau đó, chúng tôi sử dụng đối tượng d1 của lớp Dog để gọi các phương thức makeSound()và eat().

Lưu ý : Nếu lớp Dog không cung cấp việc triển khai phương thức trừu tượng makeSound(), thì Dog cũng phải được khai báo là trừu tượng. Điều này là do lớp con Dog kế thừa makeSound()từ Animal .

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

Một lớp trừu tượng có thể có các hàm tạo giống như lớp thông thường. Và, chúng ta có thể truy cập hàm tạo của một lớp trừu tượng từ lớp con bằng cách sử dụng supertừ khóa. Ví dụ,

abstract class Animal {
   Animal() {
      ….
   }
}

class Dog extends Animal {
   Dog() {
      super();
      ...
   }
}

Ở đây, chúng ta đã sử dụng hàm tạo super()bên trong của Dog để truy cập hàm tạo của Animal .

Lưu ý rằng superphải luôn là câu lệnh đầu tiên của hàm tạo lớp con. Truy cập từ khóa siêu Java để tìm hiểu thêm.

Tóm tắt Java

Công dụng chính của các lớp và phương thức trừu tượng là đạt được tính trừu tượng trong Java.

Tính trừu tượng là một khái niệm quan trọng của lập trình hướng đối tượng cho phép chúng ta ẩn các chi tiết không cần thiết và chỉ hiển thị các thông tin cần thiết.

Điều này cho phép chúng tôi quản lý sự phức tạp bằng cách bỏ qua hoặc ẩn các chi tiết bằng một ý tưởng đơn giản hơn, cấp cao hơn.

Một ví dụ thực tế của sự trừu tượng có thể là phanh xe máy. Chúng tôi biết những gì phanh làm. Khi chúng ta đạp phanh, xe máy sẽ dừng lại. Tuy nhiên, hoạt động của phanh được giấu kín với chúng tôi.

Ưu điểm chính của việc ẩn hoạt động của phanh là hiện nay nhà sản xuất có thể thực hiện phanh khác nhau cho các loại xe máy khác nhau, tuy nhiên, phanh nào hoạt động sẽ giống nhau.

Hãy lấy một ví dụ giúp chúng ta hiểu rõ hơn về tính trừu tượng của Java.

Ví dụ 3: Tóm tắt Java

abstract class Animal {
  abstract void makeSound();

}

class Dog extends Animal {

  // implementation of abstract method
  public void makeSound() {
    System.out.println("Bark bark.");
  }
}

class Cat extends Animal {

  // implementation of abstract method
  public void makeSound() {
    System.out.println("Meows ");
  }
}

class Main {
  public static void main(String[] args) {
    Dog d1 = new Dog();
    d1.makeSound();

    Cat c1 = new Cat();
    c1.makeSound();
  }
}

Đầu ra :

Bark bark
Meows

Trong ví dụ trên, chúng ta đã tạo một Superclass Animal . Superclass Animal có một phương thức trừu tượng makeSound().

Các makeSound()phương pháp không thể được thực hiện bên trong động vật . Đó là bởi vì mỗi con vật tạo ra âm thanh khác nhau. Vì vậy, tất cả các lớp con của Animal sẽ có cách triển khai khác nhau makeSound().

Vì vậy, việc triển khai makeSound()trong Animal được giữ ẩn.

Ở đây, Dog tự thực hiện makeSound()và Cat tự triển khai makeSound().

Lưu ý : Chúng ta cũng có thể sử dụng các giao diện để đạt được tính trừu tượng trong Java. Để tìm hiểu thêm, hãy truy cập Giao diện Java .

Những điểm chính cần nhớ

Chúng tôi sử dụng từ khóa trừu tượng để tạo các lớp và phương thức trừu tượng.
Một phương thức trừu tượng không có bất kỳ triển khai nào (thân phương thức).
Một lớp chứa các phương thức trừu tượng cũng nên trừu tượng.
Chúng ta không thể tạo các đối tượng của một lớp trừu tượng.
Để triển khai các tính năng của một lớp trừu tượng, chúng ta kế thừa các lớp con từ nó và tạo các đối tượng của lớp con.
Một lớp con phải ghi đè tất cả các phương thức trừu tượng của một lớp trừu tượng. Tuy nhiên, nếu lớp con được khai báo là trừu tượng, thì không bắt buộc phải ghi đè các phương thức trừu tượng.
Chúng ta có thể truy cập các thuộc tính và phương thức tĩnh của một lớp trừu tượng bằng cách sử dụng tham chiếu của lớp trừu tượng. Ví dụ, Animal.staticMethod ();









Gõ tìm kiếm nhanh...