【发布时间】:2015-04-23 13:52:15
【问题描述】:
我有以下 java 程序,是我在学习 java 教程时编写的。
public class Primitive_prac {
public static void main(String[] args) {
// TODO code application logic here
Parent obj1 = new Child();
Child obj2 = new Child();
System.out.println("ojb1 is instance of Parent: " + (obj1 instanceof Parent));
System.out.println("ojb1 is instance of Parent: " + (obj1 instanceof Child));
System.out.println("ojb1 is instance of Parent: " + (obj1 instanceof Interface1));
System.out.println();
System.out.println("ojb2 is instance of Parent: " + (obj2 instanceof Parent));
System.out.println("ojb2 is instance of Parent: " + (obj2 instanceof Child));
System.out.println("ojb2 is instance of Parent: " + (obj2 instanceof Interface1));
}
}
class Parent{}
interface Interface1{}
class Child extends Parent implements Interface1{}
如您所见,我创建了一个类Parent、一个接口Interface1,以及一个扩展Parent 并实现Interface1 的子类Child。
但是,我对以下陈述有疑问:
Parent obj1 = new Child();
在这种情况下 obj1 是 Parent 或 Child 的一个实例?上面这句话的真正含义是什么? =左侧的Parent obj1是什么意思,=右侧的new Child()是什么意思。而Parent obj1 = new Child();作为声明是什么意思?
下面是程序的输出。
run:
ojb1 is instance of Parent: true
ojb1 is instance of Parent: true
ojb1 is instance of Parent: true
ojb2 is instance of Parent: true
ojb2 is instance of Parent: true
ojb2 is instance of Parent: true
BUILD SUCCESSFUL (total time: 0 seconds)
我有点困惑,因为输出显示 obj1 和 obj2 都是 Parent、Child 和 Interface1 的实例。创建 obj1 时的 Parent 字是否有所不同?创建obj1的时候写Parent有什么意义?
我发现很难用语言表达,但我希望你能明白我的问题。
谢谢。
【问题讨论】:
-
Instanceof 基本上告诉你,如果一个实例可以分配给一个类型。而且由于您可以将 Child 分配给 Parent,并且您可以将实现接口的任何实例分配给该接口,所有这些都是 true。
标签: java class interface instance parent-child