Tóm Tắt
I. Extends Trong Java Là Gì
Tính thừa kế trong Java là 1 kỹ thuật mà trong đó 1 đối tượng người tiêu dùng thu được toàn bộ thuộc tính và hành vi của đối tượng người dùng cha. Ý tưởng đằng sau tính thừa kế trong Java là bạn hoàn toàn có thể tạo những lớp mới mà được kiến thiết xây dựng dựa trên những lớp đang sống sót .
Khi các bạn kế thừa từ 1 lớp đang tồn tại, bạn có thể tái sử dụng những phương thức và những trường của lớp cha, và các bạn cũng có thể bổ sung thêm những phương thức và những trường khác. Tính kế thừa biểu diễn mối quan hệ IS-A, còn được gọi là mối quan hệ cha-con.
Bạn đang đọc: Extends Trong Java – Techacademy
Như vậy, để hiểu 1 cách thực tiễn, giả sử tiên phong tất cả chúng ta có 1 lớp nào đó, lớp này hoàn toàn có thể là do tất cả chúng ta viết ra, hay “ lượm lặt ” ở đâu đó, mình tạm gọi tên lớp sẵn có này là A. Sau đó, để tận dụng lại những hàm hay những thuộc tính của A mà không cần phải viết lại ( hoặc copy lại, hoàn toàn có thể vi phạm bản quyền ), thì tất cả chúng ta kiến thiết xây dựng 1 lớp mới thừa kế từ A, mình gọi lớp mới này là B .
Khi đó B của tất cả chúng ta sẽ có sẵn những phương pháp và thuộc tính mà A có. Cũng có lúc không vì mục tiêu dùng lại những giá trị của A, mà là vì 1 vài giá trị của A không tương thích với nhu yếu của B, thế là việc thừa kế từ A còn giúp cho B có thời cơ được hoàn thành xong lại ( hay còn gọi là lan rộng ra ) những giá trị chưa tương thích đó của A mà không làm biến hóa thực chất của A .
Vì sao sử dụng tính kế thừa trong Java?
- Để ghi đè phương thức (Method Overriding), do đó có thể thu được tính đa hình tại runtime.
- Để làm tăng tính tái sử dụng của code.
II. Cách Sử Dụng Extends ?
Cú pháp của kế thừa trong Java
Sử dụng từ khóa extends để thừa kế .
class Subclass-name extends Superclass-name { //methods and fields }
Từ khóa extends có ý nghĩa rằng những bạn đang tạo 1 lớp mới và kế thừa từ 1 lớp đang sống sót. Trong Java, 1 lớp mà được thừa kế được gọi là lớp cha, lớp thừa kế là lớp con .
Cách sử dụng Extends
Hãy cùng Techacademy xem qua 1 ví dụ sau :
Tạo 1 tập tin là : myClass. java
public class myClass { public myClass() { // Construct } int number = 200; }
Tiếp theo tạo file TwoClass. java
public class TwoClass extends myClass { public TwoClass() { // Constructor } public static void main(String[] args) { TwoClass obj = new TwoClass(); System.out.println(obj.number); } }
Ví dụ tất cả chúng ta có những class A, B.Class A có 1 phương pháp để hiển thị là show ( ). Class B gồm hai phương pháp display ( ) và show ( ) nhưng Class B kế thừa từ class A. Sau đó tất cả chúng ta sẽ tạo ra đối tượng người dùng dựa vào class B rồi gọi phương pháp show, hiệu quả trả về sẽ là “ better show ” chứ không phải là “ show ”. Lý do vì class B đã extends từ class A thì nếu có 2 phương pháp của lớp cha trùng tên thì sẽ ghì đè lên phương pháp trùng tên của lớp con .
Dưới đây là 1 ví dụ của extends trong Java :
class A { public void show() { System.out.println("show"); } } class B extends A { public void display() { System.out.println("display"); } public void show() { System.out.println("better show"); } } public class Main { public static void main(String[] args) { A a = new B(); // possible because B extends A a.show(); // this will now call to show() method of class B } } Output better show
III. Ví Dụ Extends Trong Java
Có 3 kiểu thừa kế trong java là đơn thừa kế, thừa kế nhiều cấp, thừa kế thứ bậc .
Khi 1 class được thừa kế từ nhiều class đươc gọi là đa thừa kế. Trong java, đa thừa kế chỉ được tư vấn trải qua interface, như đã được nói đến trong bài interface trong java
Ví dụ về đơn kế thừa
File : TestInheritance1. java
class Animal { void eat() { System.out.println("eating..."); } } class Dog extends Animal { void bark() { System.out.println("barking..."); } } public class TestInheritance1 { public static void main(String args[]) { Dog d = new Dog(); d.bark(); d.eat(); } }
Output :
barking... eating...
Ví dụ về kế thừa nhiều cấp
File : TestInheritance2. java
class Animal { void eat() { System.out.println("eating..."); } } class Dog extends Animal { void bark() { System.out.println("barking..."); } } class BabyDog extends Dog { void weep() { System.out.println("weeping..."); } } public class TestInheritance2 { public static void main(String args[]) { BabyDog d = new BabyDog(); d.weep(); d.bark(); d.eat(); } }
Kết quả là :
weeping... barking... eating...
Ví dụ về kế thừa thứ bậc
File: TestInheritance3.java
Xem thêm: JVM (Java Virtual Machine) _ Kiến trúc
class Animal { void eat() { System.out.println("eating..."); } } class Dog extends Animal { void bark() { System.out.println("barking..."); } } class Cat extends Animal { void meow() { System.out.println("meowing..."); } } public class TestInheritance3 { public static void main(String args[]) { Cat c = new Cat(); c.meow(); c.eat(); // c.bark(); // compile error } }
Kết quả là :
meowing... eating...
III. Phân Biệt Extends Và Implements Trong Java
Phân biệt Extends và Implements trong Java là một trong những câu hỏi trong phỏng vấn liên tục gặp. Extends và Implements là 2 từ khóa được sử dụng rất nhiều trong Java. Tuy nhiên 1 số lập trình viên mới học chưa nắm được sự độc lạ thì ở bài viết này sẽ cụ thể hóa yếu tố này .
Extends : thừa kế những class
Implements : thừa kế những interface
Mặc dù cả 2 Extends và Implements trong Java được sử dụng để thực thi thừa kế nhưng có những sự độc lạ giữa chúng. Extends được sử dụng để kế thứ từ 1 class khác trong khi đó Implements cũng được sử dụng để kế từ những Interface
Cách sử dụng Extends ?
Ví dụ tất cả chúng ta có những class A, B.Class A có một phương pháp để hiển thị là show ( ). Class B gồm hai phương pháp display ( ) và show ( ) nhưng Class B kế thừa từ class A. Sau đó tất cả chúng ta sẽ tạo ra đối tượng người dùng dựa vào class B rồi gọi phương pháp show, tác dụng trả về sẽ là “ better show ” chứ không phải là “ show ”. Lý do vì class B đã extends từ class A thì nếu có hai phương pháp của lớp cha trùng tên thì sẽ ghì đè lên phương pháp trùng tên của lớp con .
Dưới đây là một ví dụ của Extends trong Java :
class A { public void show() { System.out.println("show"); } } class B extends A { public void display() { System.out.println("display"); } public void show() { System.out.println("better show"); } } public class Main { public static void main(String[] args) { A a = new B(); // possible because B extends A a.show(); // this will now call to show() method of class B } } Output better show
Cách sử dụng Implements ?
Ở ví dụ dưới tất cả chúng ta có 1 class R và implements từ interface Runnable thì bắt buộc rằng class R phải orver @ Override tổng thể những phương pháp trừu tượng của interface Runnable. Ở đây là method run ( ) .
class R implements Runnable{ public void run(){ System.out.println("do nothing"); } }
Điểm khác biệt quan trọng :
Dưới đây là 1 số điểm độc lạ quan trọng của Extends và Implements trong Java :
1 ) Một class hoàn toàn có thể kế thừa từ 1 class khác, không hề Extends từ 1 Interface .
interface I{ } class A{ } class B extends A{ } class C extends I{ }
Khi bạn chương trình chạy và biên dịch thì sẽ Open lỗi sau :
$ javac Main.java Main.java:27: no interface expected here class C extends I{ ^ 1 error
2 ) Khi sử dụng Extends, 1 class chỉ hoàn toàn có thể kế thừa từ một class khác, dưới đây là code thông tin lỗi khi nỗ lực Extends từ nhiều class :
class C extends A, B{ } $ javac Main.java Main.java:27: '{' expected class C extends A, B{ ^ 1 error
3 ) Một Interface hoàn toàn có thể Extends từ một Interface khác .
interface J extends I{ }
4 ) Một class hoàn toàn có thể thừa kế từ nhiều Interface khác bằng cách sử dụng Implements, đoạn code dưới đây biểu lộ :
class D implements I, J, K{ }
5 ) Strong một lớp hoàn toàn có thể sử dụng Extends và Implements .
class E extends A implements I, J{ }
6 ) Một Interface không hề Implements từ một Interface, nó không hề xảy ra cho nên vì thế lúc này khi chạy chương trình, nó sẽ xảy ra ngoại lệ :
interface L implements J{ } javac Main.java Main.java:49: '{' expected interface L implements J{ ^ 1 error
Đó là tổng thể về sự độc lạ giữa Extends và Implements trong Java. Bài viết nói lên những sự khác biết là kinh nghiệm tay nghề trong lập trình của Techacademy có được, kỳ vọng bạn đọc xem và vận dụng được ở thực tiễn .
Đánh Giá Chất Lượng Bài Viết
Average rating 0 / 5. Vote count : 0 No votes so far ! Be the first to rate this post.
Source: https://final-blade.com
Category: Kiến thức Internet