java 父类对象 和 子类对象 的类型转换

Posted billxxx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 父类对象 和 子类对象 的类型转换相关的知识,希望对你有一定的参考价值。

/**
 * 父类对象 和 子类对象  的类型转换
 */
public class TypeCast{
    public static void main(String[] args){
        Employee[] staff = new Employee[3];
        staff[0] = new Employee();
        System.out.println(staff[0]);
        System.out.println(staff[1]);

        //Manager boss0 = staff[0];  //java.lang.Error: Unresolved compilation problems:
                                     //Type mismatch:cannot convert from Employee to Manager

        //Manager boss0 = (Manager)staff[0]; //ClassCastException: Employee cannot be cast to Manager
        Manager boss0 = (Manager)staff[1];  //staff[1] is null, can give to boss0
        System.out.println(boss0);

        Manager boss = new Manager();
        System.out.println(boss);

        staff[0] = boss;  // subclass object assign to reference
        System.out.println(staff[0]);
    }
}

class Employee{
    private String name;
    public Employee(){
        this("emplyee");
    }
    public Employee(String name){
        this.name = name;
    }
    public String toString(){
        return name;
    }
}

class Manager extends Employee{
    private int bonus;
    public Manager(){
        super("manager");
        bonus = 1;
    }
    public String toString(){
        return super.toString() + " " + bonus;
    }
}

以上是关于java 父类对象 和 子类对象 的类型转换的主要内容,如果未能解决你的问题,请参考以下文章

Java面向对象多态和接口

java中让子类引用指向父类对象的时候怎么进行类型转换?

JAVA中如何对父类对象强制转换子类对象的引用

java向上转型和向下转型

Java 如何实现父类转换为子类的效果?

Java多态对象的类型转换和动态绑定