类型比较运算符 instanceof 与 多态 类型转换的一些现象

类型比较运算符 instanceof多态 类型转换的一些现象

多态

关于多态的描述可以看之前的文章
https://blog.csdn.net/norang/article/details/110943231

从中而知

多态的出现有三个前提,1.具有继承和实现之一 2.要有方法的重写或实现 3.用 超类或接口来声明子类的对象

类型比较运算符 instanceof

类型比较运算符 instanceof 与 多态 类型转换的一些现象
总的来说,instanceof运算符的作用就是,

boolean a=obj instanceof Class

假如左边的 obj对象能够转换成右边的Class 类型的数据,则返回true, 否则 返回 false。

public class Dog extends Pet implements Animal{
    public static void main(String[] args) {

        Pet pet=new Pet();
        System.out.println(pet);
        System.out.println(pet instanceof Dog);   //返回 false




      ((Dog)pet).play();   //编译期时,不会报错,但在 运行期,会报错。

    }

}

类型比较运算符 instanceof 与 多态 类型转换的一些现象

也就是 Pet父类型对象,无法转换成Dog对象。虽然Pet与Dog有继承关系。

从另一个方面,作为子类Dog拥有的数据范围,本身就比父类的Pet大,这种转换的不可行,也有了一定的依据。

有什么不懂的,建议直接看官方文档
https://docs.oracle.com/javase/specs/index.html

上一篇:java 关键字


下一篇:7. 类与对象3