强制类型转换

Posted guochengfirst

tags:

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

1,向上转型,安全,具体化到抽象化

2,向下转型,不安全,抽象化到具体化

建立两个对象,动物抽象类Animal和狗狗类Dog

public abstract class Animal {
    public abstract  void  dosomething();
}

public class Dog extends Animal{
    private String name;

    public Dog(String s) {
        this.name=s;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public void dosomething() {
        System.out.println("狗狗会跑");
    }
}

  写一个测试类

public class Test {
    public static void main(String[] args) {
        //向上转型,安全,将狗对象赋值给动物变量
        Animal animal=null;
        Dog dog=new Dog("小黄");
        animal=dog;
        System.out.println(((Dog) animal).getName());//小黄

        //向下转型,不安全,将动物对象赋值给狗变量
        Dog dog1=null;
        //dog1=animal;//编译报错:incompatible type 不相容类型
        //把animal强转为Dog类型,编译通过
        dog1= (Dog) animal;
        System.out.println(dog1.getName());//小黄
    }
}

 总结:将一个对象赋值给一个变量,主要看该对象是不是这个变量的一个实例,如将狗对象赋值给动物变量(向上转型,安全,具体化到抽象化),狗是动物的一个实例,反之,如果将动物对象赋值给狗变量(向下转型,不安全,抽象化到具体化),则为动物是狗的实例,不符合逻辑,

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

数据类型转换之强制类型转换

服务器 数据库代码 类型转换问题 必须强制类型转换

强制类型转换

今天聊一聊Java引用类型的强制类型转换

关于强制类型转换(c语言)

Java数据类型转换(自动转换和强制转换)