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;
    }
}


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM