Chọn lựa giữa Interface và Abstract Classe trong Java
Trong Java chúng ta có Interfces và Abstract classes, khi sử dụng Interfaces chúng ta dùng implement còn với Abstract là extend. Vậy khi nào chúng ta sử dụng Interfaces hoặc abstract để kế thừa phương thức từ class cha. Chúng ta hãy cùng tìm hiểu.
Abstract Class là gì?
Java là ngôn ngữ hướng đối tượng, từ abstract trong java có ý nghĩa là không cụ thể. Nó giống như một ý tưởng, một khái niệm. Vì vậy khi chúng ta nói về abstract class, nó có nghĩa là class không có một triển khai cụ thể nào. Nó là một cấu trúc hay hướng dẫn được tạo ra cho nhiều class cụ thể.
Abstractt classes không thể là instantiation nhưng chúng có thể là subclass. Một abstract class có thể có nhiều static fields hoặc nhiều static method. Khi một abstract class là subclass, nó thường cung cấp implementations cho tất cả abstract method trong class cha của nó.
Ví dụ chúng ta tạo ra một abstract class là Vehicle. Class này có các thuộc tính như engine, shape.... của class Car, và các phương thức liên quan. Chúng ta thêm engine và shape trong abstract class bởi vì không có phương tiện nào có thể tồn tại nếu ko có 2 thuộc tính trên.
abstract class Vehicle {
private String engine;
abstract void startEngine();
abstract void stopEngine();
}
private String engine;
abstract void startEngine();
abstract void stopEngine();
}
Interfaces là gì?
Interfacce là một khuôn mẫu chung để cho việc giao tiếc giữa các đối tượng trong hệ thống. Khi một class implements từ nó, instance của class đó đạt chuẩn, các đối tượng của class khác có thể sử dụng các tính năng của đối tượng chuẩn đó mà không lo lắng nó thiếu method nào, vì nó đã bắt buộc phải có đủ các phương thúc của chuẩn mới tạo. Ví dụ như một ô tô có thể di chuyển, vì vậy chúng ta có tể tạo một interface Movable và implement trong class Car.interface Movable {
void move();
}
Chúng ta tạo một class Car được extend từ class Vehicle và implement từ class Movable :
class Car extends Vehicle implements Movable {
@Override
void startEngine() {
System.out.println("starting car's engine");
}
@Override
void stopEngine() {
System.out.println("stoping car's engine");
}
@Override
public void move() {
System.out.println("moving car");
}
}
Tổng kết:
-Abstract class: Tạo một abstract class khi bạn đang cung cấp hướng dẫn cho một class cụ thể, bạn hiểu class sẽ có những chức năng gì và nó chắc chắn sẽ thực thi theo.-Interface: Nó như một bộ khung, một chuẩn gồm các chức năng mà module đó cần phải có, để những thằng con có thể thực thi đầy đủ các chức năng đó, không bỏ sót cái nào.
Nhận xét
Đăng nhận xét