从不同类的引用创建不同类的对象

时间:2017-05-13 17:31:16

标签: java stack heap-memory

我是Java的新手......直到我发现JAVA中可能出现以下情况时,情况一直很顺利。

package newProject;

class A {
}
class B extends A {
    }

public class C {

    public static void main (String[] args) {
      A obj = new B();
    }
}

任何人都可以详细解释一下上述场景的可能性以及它在内存方面的工作方式

2 个答案:

答案 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();