Java 如何将基类对象指定给父类引用?

Java 如何将基类对象指定给父类引用?,java,inheritance,parent-child,Java,Inheritance,Parent Child,假设我们有一个基类和一个父类,分别命名为Child和parent Parent b = new Child(); System.out.println(b instanceof Child);// prints true. System.out.println(b instanceof Parent);//prints true. 那么,为什么这两条语句的结果都是真的呢?instanceof检查对象的动态类型的关系“是” Animal a = new Dog() //Dynamic type

假设我们有一个基类和一个父类,分别命名为
Child
parent

Parent b = new Child();
System.out.println(b instanceof Child);// prints true.
System.out.println(b instanceof Parent);//prints true.

那么,为什么这两条语句的结果都是真的呢?

instanceof
检查对象的动态类型的关系“是”

Animal a = new Dog() //Dynamic type of a is Dog
d instanceof Animal // TRUE
因为狗是一种动物

因此,
instanceof
查看动物的分支,发现狗是动物的孩子,因此返回true

然而:

a instance of Dog // FALSE
因为动物不一定是狗


结论:
X instanceof Y
,要实现这一点,Y必须是X的父级或同一分支中的相同类型的X

instanceof
检查对象的动态类型的关系“是”

Animal a = new Dog() //Dynamic type of a is Dog
d instanceof Animal // TRUE
因为狗是一种动物

因此,
instanceof
查看动物的分支,发现狗是动物的孩子,因此返回true

然而:

a instance of Dog // FALSE
因为动物不一定是狗


结论:
X是Y的实例
,要做到这一点,Y必须是X的父项或同一分支中的相同类型的X

如果B类扩展了a类,那么B是a。例如,圆是一个形状

能够像引用父类一样引用实例是面向对象语言的要求之一


参见

如果B类扩展了A类,则B是A。例如,圆是一种形状

能够像引用父类一样引用实例是面向对象语言的要求之一


请参见操作符的
实例将对象与指定类型进行比较。您可以使用它来测试对象是类的实例、子类的实例还是实现特定接口的类的实例

阅读更多

注意:使用
instanceof
运算符时,请记住
null
不是任何对象的实例

例如:

String name = null;
System.out.println((name instanceof String));  // prints false

你可能会感兴趣


instanceof
操作符将对象与指定类型进行比较。您可以使用它来测试对象是类的实例、子类的实例还是实现特定接口的类的实例

阅读更多

注意:使用
instanceof
运算符时,请记住
null
不是任何对象的实例

例如:

String name = null;
System.out.println((name instanceof String));  // prints false

你可能会感兴趣


因为BASE也是父级,因为它扩展了类。code>Base
is-a
Parent
@JonSkeet抱歉,我很困惑,如果您能提供我一些书面参考,我会很高兴……来了解这只狗。所以狗是一种动物。这是一个关系,因为BASE也是一个父级,因为它扩展了类。code>Baseis-a
Parent
@JonSkeet抱歉,我很困惑,如果您能提供我一些书面参考,我会很高兴……来了解这只狗。所以狗是一种动物。instanceof测试这是一种关系。