tinh ke thua trong java

5 135 1
tinh ke thua trong java

Đang tải... (xem toàn văn)

Thông tin tài liệu

http://vietjack.com/java/index.jsp Copyright © vietjack.com Tính kế thừa Java Tính kế thừa Java môt kỹ thuật mà đối tượng thu tất thuộc tính hành vi đối tượng cha Ý tưởng đằng sau tính kế thừa Java bạn tạo lớp mà xây dựng dựa lớp tồn Khi bạn kế thừa từ lớp tồn tại, bạn tái sử dụng phương thức trường lớp cha, bạn bổ sung thêm phương thức trường khác Tính kế thừa biểu diễn mối quan hệ IS-A, gọi mối quan hệ cha-con Khi nói tính kế thừa, từ khóa thường xuyên sử dụng extends vàimplements Những từ khóa định nghĩa kiểu loại IS-A loại khác Sử dụng từ khóa, tạo đối tượng sử dụng thuộc tính đối tượng khác Chúng ta sử dụng từ khóa extends lớp để kế thừa thuộc tính lớp cha trừ thuộc tính private lớp cha Tại sử dụng tính kế thừa Java?  Để ghi đè phương thức (Method Overriding), thu tính đa hình runtime  Để làm tăng tính tái sử dụng code Cú pháp Tính kế thừa Java class ten_lop_con extends ten_lop_cha { //cac phuong thuc va cac truong } Từ khóa extends bạn tạo lớp mà kế thừa từ lớp tồn Trong Java, lớp mà kế thừa gọi lớp cha Lớp gọi lớp Trong ví dụ sau, Programmer lớp Employee lớp cha Mối quan hệ hai lớp Programmer IS-A Employee Nghĩa Programmer kiểu Employee class Employee{ float salary=40000; } class Programmer extends Employee{ int bonus=10000; http://vietjack.com/ Trang chia sẻ học online miễn phí Page http://vietjack.com/java/index.jsp Copyright © vietjack.com public static void main(String args[]){ Programmer p=new Programmer(); System.out.println("Luong Lap trinh vien la:"+p.salary); System.out.println("Bonus cua Lap trinh vien la:"+p.bonus); } } Ở trên, đối tượng Programmer truy cập trường riêng lớp lớp Employee, ví dụ cho tính tái sử dụng Các loại kế thừa Java Trên sở lớp có loại kế thừa Java, single (đơn), multilevel (nhiều tầng) hierarchical (có cấu trúc) Trong lập trình Java, đa kế thừa (multiple) kế thừa lai (hybrid)chỉ hỗ trợ thơng qua Interface Chúng ta tìm hiểu Interface chương sau Ghi chú: Đa kế thừa khơng hỗ trợ Java thông qua lớp Khi lớp kế thừa từ nhiều lớp, đa kế thừa Câu hỏi: Tại đa kế thừa không hỗ trợ Java thông qua lớp? Trả lời: Để giảm tính phức tạp làm đơn giản hóa ngôn ngữ, đa kế thừa không hỗ trợ Java Giả sử có tình có ba lớp A, B C Lớp C kế thừa lớp A B Nếu lớp A B có phương thức bạn gọi từ đối tượng lớp con, điều gây tính lưỡng nghĩa để gọi phương thức lớp A lớp B Bởi vì, compile time error tốt runtime error, Java thông báo compile time error bạn kế thừa lớp Do đó, dù bạn có hay khơng có phương thức hay khác phương thức, lỗi compile time class A{ void msg(){System.out.println("Hello");} } class B{ void msg(){System.out.println("Welcome");} } class C extends A,B { //gia su neu no da co http://vietjack.com/ Trang chia sẻ học online miễn phí Page http://vietjack.com/java/index.jsp Copyright © vietjack.com Public Static void main(String args[]){ C obj=new C(); obj.msg();//Bay gio phuong thuc msg() nao se duoc goi? } } Chương trình cho Compile Time Error Khi bạn hiểu rõ từ khóa extends, tìm hiểu từ khóa implementstrong quan hệ IS-A Từ khóa implements sử dụng lớp mà kế thừa từ Interface Interface khơng kết thừa lớp Ví dụ: public interface A {} public class B implements A{ } public class C extends B{ } Từ khóa instanceof Java Bây dùng tốn tử instanceof để kiểm tra xem B có phải A dog có phải A interface A{} class B implements A{} public class C extends B{ public static void main(String args[]){ http://vietjack.com/ Trang chia sẻ học online miễn phí Page http://vietjack.com/java/index.jsp Copyright © vietjack.com B m = new B(); C d = new C(); System.out.println(m instanceof A); System.out.println(d instanceof B); System.out.println(d instanceof A); } } Kết in sau: true true true Quan hệ HAS-A Java Có quan hệ chủ yếu dựa vào cách sử dụng Nó xác định có hay khơng lớp cụ thể HASA Quan hệ giúp giảm dư thừa code tránh bug Cùng xem ví dụ đây: public class Vehicle{} public class Speed{} public class Van extends Vehicle{ private Speed sp; } Điều lớp Van có quan hệ HAS-A với lớp Speed Việc sử dụng lớp riêng rẽ cho lớp Speed, khơng cần thiết phải đặt tồn code lớp Speed bên lớp Van, điều tăng tính tái sử dụng lớp Speed cho nhiều ứng dụng Một đặc điểm quan trọng phải ghi nhớ Java hỗ trợ kế thừa đơn Điều nghĩa lớp kế thừa từ nhiều lớp Do đó, đoạn code không hợp lệ: public class extends A, B{} http://vietjack.com/ Trang chia sẻ học online miễn phí Page http://vietjack.com/java/index.jsp Copyright © vietjack.com Mặc dù lớp implement nhiều interface Điều loại bỏ khả đa kế thừa Java http://vietjack.com/ Trang chia sẻ học online miễn phí Page ... cho tính tái sử dụng Các loại kế thừa Java Trên sở lớp có loại kế thừa Java, single (đơn), multilevel (nhiều tầng) hierarchical (có cấu trúc) Trong lập trình Java, đa kế thừa (multiple) kế thừa... Interface chương sau Ghi chú: Đa kế thừa khơng hỗ trợ Java thông qua lớp Khi lớp kế thừa từ nhiều lớp, đa kế thừa Câu hỏi: Tại đa kế thừa không hỗ trợ Java thông qua lớp? Trả lời: Để giảm tính phức... học online miễn phí Page http://vietjack.com /java/ index.jsp Copyright © vietjack.com Mặc dù lớp implement nhiều interface Điều loại bỏ khả đa kế thừa Java http://vietjack.com/ Trang chia sẻ học

Ngày đăng: 03/12/2017, 01:06

Từ khóa liên quan

Mục lục

  • Tính kế thừa trong Java

    • Tại sao sử dụng tính kế thừa trong Java?

    • Cú pháp của Tính kế thừa trong Java

    • Các loại kế thừa trong Java

    • Ví dụ:

    • Từ khóa instanceof trong Java

    • Quan hệ HAS-A trong Java

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan