Chuyển đến nội dung chính

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();
}

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

Bài đăng phổ biến từ blog này

Đa ngôn ngữ trong Angular  Trong phần này mình sẽ thêm chức năng đa ngôn ngữ cho project angular. Chúng ta sử dụng thư viện @ngx-translate cho bài viết, bạn có thể tham khảo ở  @ngx-translate   Trước tiên chúng ta cần tạo project và import thư viện: ng new angular-translate cd  angular-translate npm install @ngx-translate/core --save npm install @ngx-translate/http-loader --save Sau đó chúng ta import thư viện  TranslateModule  vào app.module.ts: -Tiếp đó chúng ta tao 2 file en.json và vn.json vào thư mục /assets/i18n/en.json -Tiếp đó chúng ta thiết lập sự kiện click chuyển ngôn ngữ trong file app.component.ts: - Để hiển thị trên giao diện, chúng ta sử dụng service TranslateService đã được khai báo trong contructor() như một pipe: Kết quả : Bằng việc truyền value vào event switchLanguage() chúng ta có thể thay đổi ngôn ngữ của trang Như vậy chúng ta đã hoàn thành xong việ...
  Giới thiệu về Spring Integration Giới thiệu      Spring Integration là một framework cho phép việc cấu hình động các tầng của hệ thống.  Nó giúp cho việc cấu hình linh động, dàn xếp các module trở nên độc lập, dễ dàng thay đổi phù hợp mục đích nâng cấp (xem hình 1 ) Hình - 1    Spring Integration cho phép nhắn tin giữa các module dựa trên Spring-based applications và nó hỗ trợ tích hợp với các hệ thông bên ngoài thông qua bộ khai báo. Mục đích chính của Spring Integration là cung cấp một mô hình đơn giản để xây dựng các giải pháp tích hợp doanh nghiệp trong khi vẫn duy trì cac mối liên kết cần thiết để có thể kiểm tra, bảo trì.    Nó đưa khái niệm về POJO lên thêm một bước nữa, nơi mà POJO được kết nối với nhau bằng cách sử dụng một mô hình nhắn tin và các thành phần riêng lẻ không thể nhận biết được các thành phần khác trong ứng dụng. Một ứng dụng được xây dựng bằng cách lắp ráp các thành phần, có thể tái sử dụng, tạ...
Get data from an API service in Angular  1. Promises và Observables  Promises:     Là một đối tượng được lập trình để thao tác bất đồng bộ trong Javascript. Nó đại diện cho một giá trị mà chúng ta muốn thao tác nhưng có thể hiện tại chưa có sẵn nhưng trong tương lại nó có giá trị trong promise đó. Một số đặc điểm của promise là: - Chỉ trả về một giá trị duy nhất, đó có thể là object, array, number.... - Không thể cancel được request - Được khởi tạo ngay mặc dù chưa được đăng ký, miễn là bạn khai báo một promise thì nó sẽ chạy contructor. Promise có ba trạng thái : Pending: khi khởi tạo đối tượng promise, gọi một request đến server. Fulfilled: thao tác gọi đến server thành công sẽ chuyển từ pending sang fulfilled qua phương thức then() (có thể xử lý kết quả thành công trong phương thức then() ). Rejected: khi request đến server bị lỗi, có thể dùng .catch() để bắt lỗi. Observables:     Tương tự như promise nhưng có mộ...