我是Java的新手......直到我发现JAVA中可能出现以下情况时,情况一直很顺利。
package newProject;
class A {
}
class B extends A {
}
public class C {
public static void main (String[] args) {
A obj = new B();
}
}
任何人都可以详细解释一下上述场景的可能性以及它在内存方面的工作方式
答案 0 :(得分:0)
如前所述,这可能 。但是,当B扩展为A时, 是可能的。这意味着B具有与A +相同的属性,方法等。
答案 1 :(得分:0)
你被允许这样做
A obj = new B();
如果满足以下条件之一:
B类必须扩展A类
B类实现了接口A
所以,使用类定义是不可能的! 现在,假设你有类似的东西:
class A {
void move(){...}
}
class B extends A {
void start(){...}
void dispose(){...}
}
A obj = new B();
您可以调用的唯一有效方法是:
obj.move();
但是由于对象是new B
,你可以调用所有声明的B方法但是你需要强制转换
((B)obj).start();