JAVA OOP (interface)

Hello các bác
Các bác cho mình hỏi
Tại sao khi khởi tạo đối tượng trong một lớp implements class interface
Lại không phải dạng
<Tên lớp> < Tên object> = new <Tên lớp> ();
Mà là
<tên lớp interface> <tên object> = new <Tên lớp>();

Hình mình họa đây ạ:

Tks

vì interface bản chất nó ko phải là lớp, nó chỉ là 1 giao diện, hàm nó là hàm trừu tượng ko có nội dung, nó được tạo ra để các class khác cài đặt phần trừu tượng đó, nó sẽ ràng buộc class nào cài đặt nó thì phải cài đặt những hàm trừu tượng kia, nên khi cầm 1 thằng interface đi sài, thì ta đc đảm bảo các hàm trừu tượng luôn đã được cài đặt, và ta phải xác định thằng nào đã cài đặt các hàm đó

Bên OOP có một câu nằm lòng: Code for Interface not for Implementation

Blog khác: https://dmitripavlutin.com/interface-vs-implementation/

2 Likes

“Program to interfaces, not implementations”
Nó là một nguyên tắc trong design pattern của Gang of Four á, gán kiểu dữ liệu là abstract ko để là kiểu cụ thể, cho dễ linh hoạt type

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?