【发布时间】:2018-03-18 02:20:26
【问题描述】:
class A {}
class B extends A{}
A objectX = new B();
最后一行是什么意思?是A类的对象还是B类的对象。
实例和对象的含义相同吗? objectX 是 A 的实例还是 B 的实例?
当我们运行 objectX.SomeMethod.编译器会检查什么?还是会在运行时检查方法?
class A{}
class B extends A{}
public class Main{
public static void main(String[] args){
A objectX = new B();
System.out.println(objectX instanceof B);//line 1
System.out.println(objectX instanceof A);//line 2
}
}
如果我运行上面的代码,为什么它对第 1 行和第 2 行给出正确的结果。objectX 指向 B。为什么 objectX 是 A 的实例?
【问题讨论】:
-
它是A类型的引用,引用B类型的对象。也就是说你只能调用方法和A类中定义的字段。
-
如果你用代码展示你的问题,而不是试图用文字来描述它,会容易得多。
标签: java oop object polymorphism instanceof