Làm cách nào để sử dụng liên kết động trong Java?

Lam Cach Nao De Su Dung Lien Ket Dong Trong Java



Các ' liên kết động ” cho phép hành vi đa hình, trong đó lời gọi phương thức của đối tượng được xác định trong thời gian chạy dựa trên loại thực tế của đối tượng, thay vì loại tham chiếu. Nó thúc đẩy khả năng sử dụng lại mã bằng cách cho phép các lớp con ghi đè và cung cấp việc triển khai các phương thức được định nghĩa trong lớp cha của chúng.

Blog này trình bày cách sử dụng và triển khai liên kết động trong Java.

Làm cách nào để sử dụng liên kết động trong Java?

Liên kết động cho phép khớp nối lỏng lẻo giữa các đối tượng. Nó giúp mở rộng dễ dàng chức năng bằng cách thêm các lớp con mới ghi đè các phương thức mà không sửa đổi mã hiện có. Liên kết động được sử dụng rộng rãi để gửi thời gian chạy, xử lý sự kiện hoặc hệ thống plugin.







Hãy để chúng tôi đi qua một vài ví dụ để giải thích chi tiết:



Ví dụ 1: Triển khai Dynamic Binding



Bằng cách sử dụng liên kết động, các lập trình viên có thể cho phép người dùng tùy chỉnh và ghi đè các hành vi mặc định để xây dựng các ứng dụng có thể tùy chỉnh. Để triển khai thực tế, chúng ta hãy xem qua một ví dụ:





nhập java.util.Arrays;
nhập java.util.HashSet;
nhập java.util.List;
nhập java.util.Set;

lớp công cộng DynBind {
public tĩnh void main ( Sợi dây [ ] tranh luận ) {
Trò chơi trò chơiType1 = Cricket mới ( ) ;
Trò chơi gameType2 = CallofDuty mới ( ) ;
gameType1.gameType ( ) ;
gameType2.gameType ( ) ;
}
}
lớp chơi game {
loại trò chơi void công khai ( ) {
System.out.println ( 'Trò chơi vật lý hoặc ảo' ) ;
}
}
lớp Cricket mở rộng Trò chơi {
@ Ghi đè
loại trò chơi void công cộng ( ) {
System.out.println ( 'Cricket là một trò chơi thể chất' ) ;
}
}
lớp CallofDuty mở rộng Trò chơi {
@ Ghi đè
loại trò chơi void công khai ( ) {
System.out.println ( 'CallofDuty là một trò chơi ảo' ) ;
}
}

Giải thích đoạn mã trên:



  • Đầu tiên, lớp “ DynBind ” được tạo và hai đối tượng kiểu “ chơi game ” được khai báo.
  • Tiếp theo, các đối tượng này được khởi tạo với “ Bóng chày ' Và ' CallofDuty ” đối tượng, khởi tạo này thể hiện ràng buộc động. Loại tham chiếu là “ chơi game ” nhưng các loại đối tượng thực tế là “ Bóng chày ' Và ' CallofDuty ', tương ứng.
  • Bây giờ, những đối tượng này được sử dụng để gọi “ gameType() ” chức năng bằng cách ghi đè chức năng trong các lớp con.
  • Sau đó, cha mẹ “ chơi game ” lớp được khai báo để tạo và khởi tạo lớp “ gameType() ”, in một tin nhắn văn bản giả.
  • Tiếp theo, hai lớp con được tạo với tên “ Bóng chày ' Và ' CallofDuty ”. Các lớp này được kế thừa từ lớp cha “ chơi game ' lớp học.
  • Sau đó, “ @Ghi đè ” chú thích được sử dụng để ghi đè cha mẹ “ chơi game ” phương thức lớp có tên “ gameType() ”.
  • Cuối cùng, một thông báo giả khác được hiển thị trong cả hai phương thức được ghi đè của lớp con.

Sau khi kết thúc giai đoạn thực hiện:

Đầu ra hiển thị rằng các thông báo giả của các lớp con được hiển thị trên bảng điều khiển bằng cách sử dụng liên kết động.

Ví dụ 2: Triển khai kế thừa đa cấp

Liên kết động cũng có thể được thực hiện để tạo kế thừa đa cấp. Hai khối mã của cùng một chương trình như hình bên dưới:

lớp chơi game {
loại trò chơi void công cộng ( ) {
System.out.println ( 'Trò chơi vật lý hoặc ảo' ) ;
}
}
lớp Cricket mở rộng Trò chơi {
@ Ghi đè
loại trò chơi void công cộng ( ) {
System.out.println ( 'Cricket là một trò chơi thể chất' ) ;
}
public void PlayingĐịnh dạng ( ) {
System.out.println ( 'Cricket có các định dạng chơi khác nhau' ) ;
}
}
lớp CallofDuty mở rộng Trò chơi {
@ Ghi đè
loại trò chơi void công cộng ( ) {
System.out.println ( 'CallofDuty là một trò chơi ảo' ) ;
}
chế độ game void công khai ( ) {
System.out.println ( 'CallofDuty có nhiều chế độ chơi' ) ;
}
}
lớp CricketGame mở rộng Cricket {
chế độ game void công khai ( ) {
System.out.println ( 'Cricket có chế độ chơi đơn' ) ;
}
}
lớp CallofDutyGame mở rộng CallofDuty {
}

Giải thích đoạn mã trên:

  • Đầu tiên, cha mẹ “ chơi game ” lớp được tạo và nó bao gồm “ gameType() ” có chứa thông báo giả.
  • Tiếp theo, hai lớp con có tên là “ Bóng chày ' Và ' CallofDuty ” được tạo ra, cả hai đều ghi đè hàm của lớp cha có tên “ gameType() ”.
  • Các lớp này chứa một chức năng bổ sung có tên là “ playFormat() ' Và ' chế độ chơi game() ” chức năng, tương ứng.
  • Sau đó, tạo một đa cấp con có tên “ CricketTrò Chơi ” được mở rộng bởi đứa trẻ “ Bóng chày ' lớp học. Nó chứa “ chế độ chơi game() ” chức năng bị ghi đè bởi cha mẹ của nó “ Bóng chày ' lớp học.
  • Sau đó, “ CallofDutyTrò Chơi ” lớp được tạo khi còn nhỏ cho “ CallofDuty ' lớp học. Nó tạo ra sự kế thừa đa cấp và kích hoạt chức năng của liên kết động.

Bây giờ, hãy chèn “ chủ yếu() ' phương pháp:

lớp công cộng DynBind {
public tĩnh void main ( Sợi dây [ ] tranh luận ) {
CallofDutyTrò Chơi codg = CallofDutyGame mới ( ) ;
codg.gameType ( ) ;
codg.gameMode ( ) ;

CricketTrò Chơi đóng băng = Trò chơi Cricket mới ( ) ;
cricg.gameType ( ) ;
cricg. PlayingFormat ( ) ;
cricg.gameMode ( ) ;
}
}

Giải thích đoạn mã trên:

  • Đầu tiên, một đối tượng của “ CallofDutyTrò Chơi ” được tạo để gọi các hàm của các lớp cha của nó.
  • Theo cách tương tự, “ CricketTrò Chơi ” đối tượng được khai báo gọi hàm lớp cha của nó có sẵn ở đa cấp trong hệ thống phân cấp.

Sau khi kết thúc giai đoạn thực hiện:

Đầu ra cho thấy rằng kế thừa đa cấp được tạo bằng cách sử dụng liên kết động trong Java.

Phần kết luận

Trong Java, “ liên kết động ” mang đến những lợi ích như tính đa hình, khả năng sử dụng lại mã, tính linh hoạt và khả năng mở rộng. Nó được thực hiện bằng cách tuân theo các quy tắc kế thừa, ghi đè phương thức và cập nhật. Liên kết động cũng cho phép các chức năng thời gian chạy và nâng cao hành vi linh hoạt và đa hình trong khái niệm OOP. Đó là tất cả về cách sử dụng và triển khai liên kết động trong Java.