强制类型转换

来源:互联网 发布:信永中和最新工资算法 编辑:程序博客网 时间:2024/06/06 19:07
/*目前多态情况下不能访问子类特有的成员。如果需要访问子类特有的成员,那么需要进行类型强制转换.基本数据类型的转换    小数据类型-------->大的数据类型      自动类型转换    大数据类型--------->小数据类型       强制类型转换     小数据类型  变量名 = (小数据类型)大数据类型;引用数据类型的转换    小数据类型--------->大数据类型     自动类型转换。    大数据类型--------->小数据类型      强制类型转换类型转换最场景的问题: java.lang.ClassCastException。 强制类型转换失败。*///动物类abstract class Animal{    String name;    public Animal(String name){        this.name = name;    }    public abstract void run();}//老鼠class  Mouse extends Animal{    public Mouse(String name){        super(name);    }    public  void run(){        System.out.println(name+"四条腿慢慢的走!");    }    //老鼠特有方法---打洞    public void dig(){        System.out.println("老鼠在打洞..");    }}//鱼class Fish extends Animal{    public Fish(String name){        super(name);    }    public  void run(){        System.out.println(name+"摇摇尾巴游啊游 !");    }    //吹泡泡    public void bubble(){        System.out.println(name+"吹泡泡...!");    }}class Demo2 {    public static void main(String[] args)     {        /*        Animal a = new Mouse("老鼠");  //多态        //调用子类特有的方法        Mouse m  = (Mouse)a;  //强制类型转换        m.dig();        */        Mouse m = new Mouse("米老鼠");        Fish f = new Fish("草鱼");        print(f);    }    //需求: 定义一个函数可以接收任意类型的动物对象,在函数内部要调用到动物特有的方法。    public static void print(Animal a){ // Animal a   = new Mouse("米老鼠");        if(a instanceof Fish){            Fish f = (Fish)a;            f.bubble();        }else if(a instanceof Mouse){            Mouse m = (Mouse)a;            m.dig();        }    }}
这里写代码片
0 0