JavaRush /Blog Java /Random-VI /Giao diện trong Java
vinsler
Mức độ

Giao diện trong Java

Xuất bản trong nhóm
Tôi là một người kể chuyện tồi nếu tôi không có mục tiêu giải thích điều gì đó khó hiểu cho ai đó bằng một yêu cầu cụ thể, vì vậy tôi hiểu những điều đơn giản và vì một điều tôi sẽ viết về nó ở đây. Tôi không làm theo ví dụ giảng dạy JavaRush về việc trước tiên đặt một câu hỏi và sau đó cho bạn biết cách thực hiện. Tôi là người ủng hộ việc kể trước rồi mới hỏi, cũng như khi kể, trình bày trước rồi giải thích.
Giao diện trong Java - 1
BS: Hành động == hành vi, hãy coi chúng là từ đồng nghĩa, hành động hiểu đơn giản chính xác hơn, nó luôn là một cái gì đó hoạt động, và hành vi có thể không biểu hiện gì cả.

giao diện - giao diện

Cái này là cái gì? Danh sách giao diện ví dụ (với generics):
public interface Store<T, ID> {
    void add(T t);
    void update(T t, ID i);
    void delete(ID i);
    T findOne(ID i);
    List<T> findAll();
}
Giao diện crud chung (từ CRUD: Tạo, Đọc, Cập nhật, Xóa). Đừng lo lắng, mọi thứ khá đơn giản. Giao diện này có nghĩa là làm việc với nhiều cơ sở dữ liệu dựa trên nguyên tắc sau: bạn cần thêm bản ghi, cập nhật bản ghi, xóa và tìm tất cả bản ghi. Bạn sẽ gặp điều này thêm 100 lần nữa và tự mình viết gần như cùng một giao diện với cùng số lần. Nó được chỉ định là public vì nó phải được thực hiện bởi lớp. Việc được thực hiện bởi một lớp có nghĩa là gì ? Mọi thứ đều rất đơn giản: nó phải mô tả tất cả các phương thức của giao diện. Ví dụ đơn giản nhất về việc triển khai trong một lớp:
void add (T t) {
	bookstore.add(t);
}
Thay vì T t, một từ chung nào đó sẽ được thay thế. Tóm lại, đây là LOẠI của một biến, đó là lý do tại sao nó thường được ký hiệu là T = Loại. Trong ví dụ của chúng tôi, giả sử nó có thể như thế này:
void add (Book book) {
	bookstore.add(book);
}
Đương nhiên, thay vì Book book, bạn có thể thay thế bất kỳ biến nào bạn cần để triển khai. Để hiểu, về mặt lý thuyết bạn có thể tưởng tượng rằng T = Object và vì trong Java mọi thứ đều là Object, nên bạn cũng có thể định nghĩa bất kỳ lớp/biến nào của mình ở đó. Rắc rối duy nhất sẽ phát sinh sau này - ngoại lệ nếu lớp bằng 0, v.v. Nói cách riêng của nó, đó là một cấu trúc chương trình nhất định xác định mối quan hệ giữa các đối tượng bằng cách chia chúng thành các phần hành vi nhất định. Mục đích của giao diện là xác định chức năng để một lớp thực hiện. Đó là một mô tả về chữ ký phương thức. Bên trong giao diện có tên của các phương thức trả về và nhập giá trị, thế là xong. Chà, bạn vẫn có thể chỉ định một số biến ở đó, nhưng chúng ngay lập tức trở thành biến cuối cùng tĩnh công khai và có thể được truy cập từ bất kỳ phần nào của chương trình. Giao diện mô tả các hành động và do đó những hành động tương tự này được chứa trong đó, tức là. chức năng hoặc phương pháp. Tại sao điều này là cần thiết? Điều này đơn giản hóa điều gì hoặc nó mang lại lợi ích gì? Đơn giản hóa việc mô tả hành động và hành vi. Chúng tôi nói phải làm gì, nhưng mỗi lớp lại tự thực hiện cách thực hiện. Tiết kiệm thời gian cho các dự án lớn. Giao diện được tạo trong các tình huống mà chúng tôi biết mình cần thực hiện một số tác vụ nhưng cách thực hiện có thể khác nhau. Giao diện mô tả tên của các hành động - đây đơn giản là một hướng trừu tượng nào đó. Mặc dù cũng có thể có các giao diện không có phương thức và trường, chẳng hạn như các điểm đánh dấu như Cloneable, Remote, v.v. Hãy lấy ví dụ yêu thích của mọi người về một chiếc ô tô. Giao diện trong đó sẽ mô tả các hành động có thể xảy ra của xe, bẻ lái hoặc hướng di chuyển, tăng tốc, lượng xăng còn lại, v.v. Đó là những hành động tương tự mà bất kỳ chiếc xe nào cũng có thể có. Nói cách khác, chúng ta đi vào khu rừng suy thoái đến mức thấp nhất trong quá trình tạo ra chiếc ô tô đầu tiên và bằng bộ não của chính mình, chúng ta tìm ra cách nó được tạo ra và nó có những gì. Đương nhiên, chúng tôi mô tả điều này một cách trừu tượng và chỉ dành cho hành động. Chiếc xe đầu tiên có gì? Có vô lăng không? Đó là, có nghĩa là nó đang rẽ ở đâu đó, hướng của vô lăng/chuyển động. Có bánh xe không? Vâng, điều đó có nghĩa là tôi đã lái xe ở một tốc độ nào đó, một sự thay đổi về tốc độ. Đó là toàn bộ giao diện. Nhưng nói chung, các giao diện được tạo ra để thực hiện một số hành động nhất định. Những thứ kia. chúng tôi viết một chương trình cho những chương trình cụ thể hơn bất kỳ chương trình nào khác mà bạn có thể nghĩ ra. Do đó, bản thân các giao diện sẽ chứa các phương thức rõ ràng và cụ thể hơn. Tất nhiên chúng sẽ trừu tượng nhất có thể. Các giao diện có thể được kế thừa lẫn nhau dưới dạng các lớp.
interface MyInterface extends NotMyinterface;
Các giao diện được thực hiện trong các lớp. Bạn có thể thực hiện bao nhiêu giao diện tùy thích. Không giống như thừa kế, chỉ thừa kế từ một.
class NewClass extends OldClass implements MyInterface, NotMyinterface;
Những thứ kia. chúng tôi đã nghĩ ra một số hành động, đặt tên cho chúng, dữ liệu đầu vào, dữ liệu trả về, viết tất cả những điều này vào giao diện, sau đó tạo một lớp và thêm giao diện của chúng tôi vào lớp này, tức là. đã triển khai giao diện của chúng tôi trong lớp này. Hơn nữa, tất cả các phương thức/chức năng được mô tả trong giao diện phải được triển khai. Nó có thể được thực hiện trực tiếp trong chính giao diện bằng cách thêm từ mặc định trước phương thức và viết phần triển khai trực tiếp vào phương thức, giống như một lớp. Điều này trở nên khả thi với phiên bản 8 của Java. Nó cũng có thể được thực hiện trong một lớp sẽ triển khai giao diện này. Chà, chúng tôi đã viết giao diện, triển khai nó trong lớp, triển khai triển khai trong lớp, chúng tôi có thể chạy và kiểm tra nó. Bạn cũng có thể đọc trong giao diện về:
  • Các phương pháp tĩnh.
  • Các phương pháp riêng tư. (lặp lại mã)
  • Biến/Hằng.
  • Giao diện lồng nhau.
Nhưng tốt hơn hết bạn nên làm điều này sau, và việc lấp đầy đầu bạn quá nhiều cũng có hại. Câu hỏi thú vị, Volvo là gì? Lớp hoặc Giao diện?
line1: Volvo v = new VolvoV2();
line2: Volvo v = new VolvoV3();
Ngoài các giao diện, cần tiếp tục về các Lớp và Lớp Trừu tượng. Có lẽ sau này, khi tôi có thêm vài giờ rảnh rỗi. ))) PS: Các bạn ơi, tôi xin mọi lời chỉ trích dưới bài đăng hoặc trong PM, tôi hoàn toàn hiểu rằng ai cũng có))) và tôi luôn thích nghe nó, vì đây là lý do để trở nên tốt hơn một chút và lại tiếp tục tiến về phía trước. Với điều đó, cảm ơn tất cả các bạn rất nhiều và chúc may mắn trong lập trình. )))
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION