Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Java

Chuyển đổi biến super class thành kiểu sub class trong Java

Kế thừa là quan hệ giữa hai class, một class kế thừa thuộc tính class kia. Dùng extends:

public class A extends B { }

Class kế thừa = sub/child class, class được kế thừa = super/parent class. Bản sao thành viên super class tạo trong sub class object → dùng sub class object truy cập cả hai.

Chuyển đổi super class reference variable thành sub class type

Có thể thử chuyển đổi bằng cast operator. Nhưng trước tiên cần tạo super class reference BẰNG sub class object, sau đó cast (super) reference sang sub class type.

Ví dụ 1

class Person {
    public String name;
    public int age;
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    public void displayPerson() {
        System.out.println("Data of the Person class: ");
        System.out.println("Name: " + this.name);
        System.out.println("Age: " + this.age);
    }
}

public class Sample extends Person {
    public String branch;
    public int Student_id;
    public Sample(String name, int age, String branch, int Student_id) {
        super(name, age);
        this.branch = branch;
        this.Student_id = Student_id;
    }
    public void displayStudent() {
        System.out.println("Data of the Student class: ");
        System.out.println("Name: " + super.name);
        System.out.println("Age: " + super.age);
        System.out.println("Branch: " + this.branch);
        System.out.println("Student ID: " + this.Student_id);
    }
    
    public static void main(String[] args) {
        Person person = new Sample("Krishna", 20, "IT", 1256);
        // Converting super class variable to sub class type
        Sample obj = (Sample) person;
        obj.displayPerson();
        obj.displayStudent();
    }
}

Đầu ra

Data of the Person class:
Name: Krishna
Age: 20
Data of the Student class:
Name: Krishna
Age: 20
Branch: IT
Student ID: 1256

Ví dụ 2

class Super {
    public Super() {
        System.out.println("Constructor of the super class");
    }
    public void superMethod() {
        System.out.println("Method of the super class ");
    }
}

public class Test extends Super {
    public Test() {
        System.out.println("Constructor of the sub class");
    }
    public void subMethod() {
        System.out.println("Method of the sub class ");
    }
    
    public static void main(String[] args) {
        Super sup = new Test();
        // Converting super class variable to sub class type
        Test obj = (Test) sup;
        obj.superMethod();
        obj.subMethod();
    }
}

Đầu ra

Constructor of the super class
Constructor of the sub class
Method of the super class
Method of the sub class