在java中创建对象

时间:2016-06-15 21:29:16

标签: java class object constructor

这句话意味着什么:

B b = new C();

这是否意味着b同时是B类和C类的对象?任何人都可以详细澄清这一点。

我知道

B b = new B();

当我从B类创建对象时,但我不知道这句话是什么意思

B b = new C();

2 个答案:

答案 0 :(得分:3)

在此声明中,C显然与B有“isA”关系 - 即BC的祖先或C的接口1}}实现。

换句话说,你有一个

class B { ... }
class C extends B [ ... }

interface B { ... }
class C implements B { ... }

其中也可能存在这些组合,而BC可能会分开多个继承步骤,例如

class B { ... }
class X extends B { ... }
class C extends X { ... }

您正在创建C实例并将其分配给B类型的变量,这意味着您只能使用通过B可见的方法(无需显式转换,至少)。

答案 1 :(得分:1)

B b = new C();

这意味着B类型的引用是指C类型的实例。 C类是B的子类。在这种情况下,您可以使用B类中定义的方法,方法是在A类中使用这些方法的重写版本(如果存在此类方法)。该机制称为多态

想象一下,您有B类的两个子类,例如AC。您将在父类的方法中编写一般实现。然后,您将覆盖子类中某些方法的行为,以使它们更具体。

B b1 = new A();
B b2 = new C();
// the same type of references

b1.performAction();
b2.performAction();
// the same methods, but the different code will be executed 
// if the methods are overridden in the childs