Java 强制类型转换

Posted

tags:

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

/*
目前多态情况下不能访问子类特有的成员。
如果需要访问子类特有的成员,那么需要进行类型强制转换.
基本数据类型的转换
小数据类型-------->大的数据类型   自动类型转换
大数据类型--------->小数据类型    强制类型转换     小数据类型  变量名 = (小数据类型)大数据类型;
引用数据类型的转换
小数据类型--------->大数据类型     自动类型转换。
大数据类型--------->小数据类型     强制类型转换
类型转换最场景的问题: java.lang.ClassCastException。 强制类型转换失败。
*/

//动物类
abstract class Animal{
    String name;
   
    public Animal(String name){
        this.name = name;
    }
    
    //public abstract void run();
    
    public void run(){
	System.out.println("动物在跑...");
    };
    public void eat(){
	System.out.println("动物在吃饭");
    }
}

//老鼠
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+"吹泡泡...!");
    }
}
public class Demo2{
    public static void main(String[] args) 
        {
        /*
        
        Animal a = new Mouse("老鼠");  //多态
        
        //调用子类特有的方法
        Mouse m  = (Mouse)a;  //强制类型转换
        m.dig();
        */
        
        Animal a = new Mouse("老鼠");  //多态

	a.run();//老鼠四条腿慢慢的走!
	Animal b =(Animal)a;
	b.run(); //老鼠四条腿慢慢的走!,多态的情形下,无论如何都调用不到父类被覆盖了那个方法了,如果父类确实有实现这个方法的话
 
        
        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();
        }
    }
}

本文出自 “小鱼的博客” 博客,谢绝转载!

以上是关于Java 强制类型转换的主要内容,如果未能解决你的问题,请参考以下文章

java 强制类型转换的规则是啥?

java中的Enum强制转换

java中的强制类型转换

JAVA类类型强制类型转换失败,知道的告诉下,谢谢

Java强制数据类型转换

Java数据类型转换:强制类型转换+自动类型转换