0
0
Lập trình
Harry Tran
Harry Tran106580903228332612117

Tính Kế Thừa Trong Java: Khám Phá Và Ứng Dụng Trong Lập Trình Hướng Đối Tượng

Đăng vào 1 tháng trước

• 4 phút đọc

Tổng Quan Về Tính Kế Thừa Trong Java

Tính kế thừa là một trong những khía cạnh cốt lõi của lập trình hướng đối tượng trong Java. Tính năng này cho phép một lớp (class) mới được tạo ra từ một lớp đã tồn tại, giúp tái sử dụng mã và tạo cấu trúc phân cấp cho các lớp trong ứng dụng.

Cú Pháp Kế Thừa Trong Java

Để thực hiện kế thừa trong Java, bạn sẽ sử dụng từ khóa extends để chỉ định lớp con kế thừa từ lớp cha:

java Copy
class ParentClass {
    // Các thuộc tính và phương thức của lớp cha
}

class ChildClass extends ParentClass {
    // Các thuộc tính và phương thức của lớp con
}

Đặc Điểm Của Kế Thừa Trong Java

  1. Đơn Kế Thừa: Trong Java, một lớp chỉ có thể kế thừa từ một lớp duy nhất, điều này có nghĩa rằng không hỗ trợ kế thừa đa cấp (multiple inheritance).

  2. Truy Cập Thành Phần Lớp Cha: Lớp con có thể truy cập các thành phần của lớp cha thông qua các phương thức public hoặc protected. Các thuộc tính private không thể truy cập trực tiếp.

  3. Ghi Đè Phương Thức (Override): Lớp con có thể ghi đè các phương thức của lớp cha để thay đổi hành vi mặc định của chúng, cho phép tùy chỉnh chức năng trong lớp con.

  4. Tính Đa Hình (Polymorphism): Tính kế thừa cũng hỗ trợ tính đa hình, cho phép đối tượng của lớp con được xem như một đối tượng của lớp cha, giúp sử dụng linh hoạt trong quỹ đạo chương trình.

Ví Dụ Về Kế Thừa

java Copy
class Animal {
    void sound() {
        System.out.println("Some sound");
    }
}

class Dog extends Animal {
    void sound() {
        System.out.println("Bark");
    }
}

class Cat extends Animal {
    void sound() {
        System.out.println("Meow");
    }
}

Trong ví dụ này, cả DogCat là các lớp con kế thừa từ lớp Animal, mỗi lớp đều định nghĩa lại phương thức sound.

Từ Khóa super Trong Java

Từ khóa super cho phép lớp con tham chiếu đến các thành phần trong lớp cha. Có một số cách để sử dụng super:

  1. Gọi Constructor của Lớp Cha: Khi tạo đối tượng lớp con, super() được sử dụng để gọi constructor của lớp cha.

    java Copy
    class ParentClass {
        ParentClass() {
            // Constructor của lớp cha
        }
    }
    
    class ChildClass extends ParentClass {
        ChildClass() {
            super(); // Gọi constructor của lớp cha
        }
    }
  2. Truy Cập Phương Thức hoặc Thuộc Tính: Lớp con có thể sử dụng super để gọi các phương thức hoặc thuộc tính lớp cha được định nghĩa công khai hoặc bảo vệ.

    java Copy
    class ParentClass {
        void display() {
            System.out.println("This is from ParentClass");
        }
    }
    
    class ChildClass extends ParentClass {
        void display() {
            super.display(); // Gọi phương thức của lớp cha
            System.out.println("This is from ChildClass");
        }
    }
  3. Chọn Constructor Khác của Lớp Cha: Nếu lớp cha có nhiều constructor, bạn có thể chỉ định cụ thể constructor nào sẽ được gọi từ lớp con.

    java Copy
    class ParentClass {
        ParentClass(int x) {}
        ParentClass() {}
    }
    
    class ChildClass extends ParentClass {
        ChildClass() {
            super(5); // Gọi constructor có tham số
        }
    }

Một Số Ví Dụ Về Tính Kế Thừa

Ví Dụ 1: Hệ Thống Quản Lý Nhân Viên

java Copy
class Employee {
    private String name;
    private int employeeId;
    private double salary;

    public void work() {}
}

class Salesperson extends Employee {
    private int numberOfSales;
    @Override
    public void work() {}
}

class Technician extends Employee {
    private String techSkill;
    @Override
    public void work() {}
}

class Manager extends Employee {
    private String department;
    @Override
    public void work() {}
}

Ví Dụ 2: Hệ Thống Quản Lý Trò Chơi

java Copy
class GameObject {
    protected int id;
    protected double positionX;
    protected double positionY;
}

class Player extends GameObject {
    private String playerName;
}

class Monster extends GameObject {
    private String monsterType;
}

class Item extends GameObject {
    private String itemName;
}

Kết Luận

Tính kế thừa không chỉ giúp tái sử dụng mã, mà còn tạo ra cấu trúc dễ quản lý cho các ứng dụng lớn. Tuy nhiên, cần sử dụng kế thừa một cách cẩn thận để tránh các vấn đề kết cấu không mong muốn. Học cách thiết kế hiệu quả với tính kế thừa là một phần thiết yếu trong phát triển phần mềm chất lượng cao trong Java.
source: viblo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào