Tính kế thừa (Inheritance) trong java

Tính kế thừa (Inheritance) trong java

Tính kế thừa (Inheritance) trong java

Kế thừa là một trụ cột quan trọng của OOP ( Lập trình hướng đối tượng ). Đây là cơ chế trong java mà một lớp được phép kế thừa các tính năn...
Comment tháng 6 06, 2021

Kế thừa là một trụ cột quan trọng của OOP (Lập trình hướng đối tượng). Đây là cơ chế trong java mà một lớp được phép kế thừa các tính năng (trường và phương thức) của lớp khác. ... Super Class: Lớp có các tính năng được kế thừa được gọi là lớp cha (hoặc lớp cơ sở hoặc lớp cha).

Tính kế thừa (Inheritance) trong java

Ý tưởng đằng sau sự kế thừa trong Java là bạn có thể tạo các lớp mới được xây dựng dựa trên các lớp hiện có. Khi bạn kế thừa từ một lớp hiện có, bạn có thể sử dụng lại các phương thức và trường của lớp cha. Hơn nữa, bạn cũng có thể thêm các phương thức và trường mới trong lớp hiện tại của mình.

Tại sao sử dụng kế thừa trong java

  •  Đối với ghi đè phương thức (do đó có thể đạt được tính đa hình thời gian chạy).
  • Để có thể tái sử dụng mã.

Thuật ngữ sử dụng trong kế thừa

  • Super Class: Lớp có các tính năng được kế thừa được gọi là lớp cha (hoặc lớp cơ sở hoặc lớp cha).
  • Sub Class: Lớp kế thừa lớp khác được gọi là lớp con (hoặc lớp dẫn xuất, lớp mở rộng hoặc lớp con). Lớp con có thể thêm các trường và phương thức của riêng nó ngoài các trường và phương thức của lớp cha.
  • Reusability: Kế thừa hỗ trợ khái niệm “khả năng tái sử dụng”, tức là khi chúng ta muốn tạo một lớp mới và đã có một lớp bao gồm một số mã mà chúng ta muốn, chúng ta có thể lấy lớp mới của mình từ lớp hiện có. Bằng cách này, chúng tôi đang sử dụng lại các trường và phương thức của lớp hiện có.

Cú pháp khai báo kế thừa

 class derived-class extends base-class 
{  
   //methods and fields  
}

Ví dụ: Trong ví dụ kế thừa dưới đây, lớp Xe đạp là lớp cơ sở, lớp MountainBike là lớp dẫn xuất mở rộng lớp Xe đạp và lớp Test là lớp lái xe để chạy chương trình.




public class Bicycle {
    public int gear;
    public int speed;

    public Bicycle(int gear, int speed) {
        this.gear = gear;
        this.speed = speed;
    }

    public void applyBrake(int decrement){
        speed -= decrement;
    }
    public void speedUp(int increment){
        speed += increment;
    }

}



public class MountainBike extends Bicycle {
    public int seatHeight;
    public MountainBike(int gear, int speed,
                        int startHeight){
        super(gear, speed);
        seatHeight = startHeight;
    }
}

Kế thừa đơn: Trong kế thừa đơn, các lớp con kế thừa các tính năng của một lớp cha. Trong hình ảnh bên dưới, lớp A đóng vai trò là lớp cơ sở cho lớp dẫn xuất B.

Cú pháp:

class A {

public int name;

class B extends A {

}

Sau đây là ví dụ kế thừa đơn.




class one {
    public void print_geek()
    {
        System.out.println("Geeks");
    }
}
 
class two extends one {
    public void print_for() { System.out.println("for"); }
}

public class Main {
    public static void main(String[] args)
    {
        two g = new two();
        g.print_geek();
        g.print_for();
        g.print_geek();
    

Kế thừa Đa cấp: Trong Kế thừa Đa cấp, một lớp dẫn xuất sẽ kế thừa một lớp cơ sở và cũng như lớp dẫn xuất cũng hoạt động như lớp cơ sở đối với lớp khác. Trong hình ảnh bên dưới, lớp A đóng vai trò là lớp cơ sở cho lớp dẫn xuất B, lớp này sẽ đóng vai trò là lớp cơ sở cho lớp dẫn xuất C.

 



class one {
    public void print_geek()
    {
        System.out.println("Geeks");
    }
}
 
class two extends one {
    public void print_for() { System.out.println("for"); }
}
 
class three extends two {
    public void print_geek()
    {
        System.out.println("Geeks");
    }
}
 
// Drived class
public class Main {
    public static void main(String[] args)
    {
        three g = new three();
        g.print_geek();
        g.print_for();
        g.print_geek();
    }
}

Kế thừa phân cấp: Trong Kế thừa phân cấp, một lớp đóng vai trò là lớp cha (lớp cơ sở) cho nhiều hơn một lớp con. Trong hình dưới đây, lớp A đóng vai trò là lớp cơ sở cho lớp dẫn xuất B, C và D.

Nhiều kế thừa (Thông qua các giao diện): Trong Nhiều kế thừa, một lớp có thể có nhiều hơn một lớp cha và kế thừa các tính năng từ tất cả các lớp cha. Xin lưu ý rằng Java không hỗ trợ nhiều kế thừa với các lớp. Trong java, chúng ta có thể đạt được nhiều thừa kế chỉ thông qua Giao diện. Trong hình ảnh bên dưới, Lớp C có nguồn gốc từ giao diện A và B. 

Thừa kế lai (Through Interfaces): Là sự kết hợp của hai hoặc nhiều kiểu thừa kế trên. Vì java không hỗ trợ nhiều kế thừa với các lớp, nên cũng không thể kế thừa kết hợp với các lớp. Trong java, chúng ta có thể đạt được thừa kế lai chỉ thông qua Giao diện.

Tính năng kế thừa trong Java

  • Lớp cha mặc định: Ngoại trừ lớp Object, không có lớp cha, mọi lớp đều có một và chỉ một lớp cha trực tiếp (kế thừa đơn). Trong trường hợp không có bất kỳ lớp cha rõ ràng nào khác, mọi lớp đều mặc nhiên là một lớp con của lớp Đối tượng.
  • Lớp cha chỉ có thể là một: Lớp cha có thể có bất kỳ số lượng lớp con nào. Nhưng một lớp con chỉ có thể có một lớp cha. Điều này là do Java không hỗ trợ nhiều kế thừa với các lớp. Mặc dù với các giao diện, nhiều tính kế thừa được hỗ trợ bởi java.
  • Cấu trúc kế thừa: Một lớp con kế thừa tất cả các thành viên (trường, phương thức và các lớp lồng nhau) từ lớp cha của nó. Các hàm tạo không phải là thành viên, vì vậy chúng không được kế thừa bởi các lớp con, nhưng hàm tạo của lớp cha có thể được gọi từ lớp con.
  • Kế thừa thành viên riêng: Một lớp con không kế thừa các thành viên riêng của lớp cha của nó. Tuy nhiên, nếu lớp cha có các phương thức công khai hoặc được bảo vệ (như getters và setters) để truy cập các trường riêng tư của nó, thì những phương thức này cũng có thể được sử dụng bởi lớp con.

Blogger Comments


Không có nhận xét nào. Chúc mừng bạn là người đầu tiên.

  • Kí tự đặc biệt
  • Tôi Share
  • Star Mạnh Blog
  • Văn Tuấn Blog
  • Tuổi Trẻ IT
  • Văn Thắng Blog
  • Duy Blogs
  • Star Sinh Blog
  • Lê Bá Long IT
  • Đặt liên kết
  • Đặt liên kết
  • Đặt liên kết