Java – Abstract class

Abstract class trong Java giống với interface trừ một điểm nó chứa các phương thức mặc định đầy đủ. Abstract class có thể chứa các phương thức mà chưa được thực thi và cũng có thể chứa các phương thức đầy đủ.

Từ khoá abstract thường được sử dụng để tạo một abstract class hoặc phương thức. Abstract class trong Java không thể khởi tạo. Abstract class chủ yếu được sử dụng để cung cấp một cơ sở cho các subclass mở rộng bằng cách sử dụng extend, thực thi các phương thức abstract, ghi đè (override), hoặc sử dụng các phương thức hoàn chỉnh trong abstract class.

Sau đây là một ví dụ về Abstract class trong Java

package com.example.design;

//abstract class
public abstract class Person {
	
  private String name;
  private String gender;
	
  public Person(String nm, String gen){
    this.name = nm;
    this.gender = gen;
  }
	
  //abstract method
  public abstract void work();
	
  @Override
  public String toString(){
    return "Name=" + this.name + "::Gender=" + this.gender;
  }

  public void changeName(String newName) {
    this.name = newName;
  }	
}

Chú ý rằng phương thức work() là một phương thức abstract và không có body. Tiếp theo bên dưới là một class sẽ extend từ abstract class trên

package com.example.design;

public class Employee extends Person {
	
  private int empId;
	
  public Employee(String nm, String gen, int id) {
    super(nm, gen);
    this.empId = id;
  }

  @Override
  public void work() {
    if(empId == 0){
      System.out.println("Not working");
    } else {
      System.out.println("Working as employee!!");
    }
  }
	
  public static void main(String args[]){

    //coding in terms of abstract classes
    Person student = new Employee("Dove","Female",0);
    Person employee = new Employee("Pankaj","Male",123);
    student.work();
    employee.work();

    //using method implemented in abstract class - inheritance
    employee.changeName("Pankaj Kumar");
    System.out.println(employee.toString());
  }
}

Subclass Employee kế thừa các thuộc tính và phương thức của superclass Person sử dụng kế thừa trong Java

Sau đây là một số điểm quan trọng về abstract class trong Java

  1. Từ khoá abstract được sử dụng để tạo abstract class trong Java
  2. Abstract class trong Java không thể khởi tạo
  3. Chúng ta có thể sử dụng từ khoá abstract để tạo một phương thức abstract, một phương thức abstract sẽ không có body
  4. Nếu một class có các phương thức abstract thì class cũng nên là abstract bằng cách sử dụng từ khoá abstract, nếu không thì nó sẽ bị lỗi khi biên dịch
  5. Không cần thiết phải có phương thức abstract trong abstract class. Chúng ta có thể đánh dấu một class là abstract thậm chí nó không có bất kỳ phương thức abstract nào
  6. Nếu một abstract class không có bất kỳ một phương thức đầy đủ nào (được implement), thì nên sử dụng interface bởi vì Java không hỗ trợ kế thừa nhiều class.
  7. Tất cả các phương thức trong interface là abstract ngầm trừ khi phương thức trong interface là static hoặc mặc định. Các phương thức mặc định hoặc static trong interface được thêm vào từ Java 8
  8. Abstract class trong Java có thể implements các interface mà không cần cung cấp thực thi của các phương thức interface.
  9. Abstract class được sử dụng để cung cấp các thực thi phương thức dùng chung cho tất cả các subclass hoặc để cung cấp thực thi mặc định.
  10. Chúng ta có thể chạy abstract class giống như các class khác nếu nó có phương thức main()

You May Also Like

About the Author: Nguyen Dinh Thuc

Leave a Reply

Your email address will not be published.