这句话意味着什么:
B b = new C();
这是否意味着b同时是B类和C类的对象?任何人都可以详细澄清这一点。
我知道
B b = new B();
当我从B类创建对象时,但我不知道这句话是什么意思
B b = new C();
答案 0 :(得分:3)
在此声明中,C
显然与B
有“isA”关系 - 即B
是C
的祖先或C
的接口1}}实现。
换句话说,你有一个
class B { ... }
class C extends B [ ... }
或
interface B { ... }
class C implements B { ... }
其中也可能存在这些组合,而B
和C
可能会分开多个继承步骤,例如
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
类的两个子类,例如A
和C
。您将在父类的方法中编写一般实现。然后,您将覆盖子类中某些方法的行为,以使它们更具体。
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