我现在正在学习java继承,我遇到了一个问题: 如果有两个班级:
public class A{
//code of class A
}
public class B extends A{
//code of class B
//code in B rewrite some methods in A
}
并且,如果我想在我的客户端程序中使用这些类并创建一个'B'对象。
之间有什么区别吗?A objectName = new B();
和
B objectName = new B();
感谢。
答案 0 :(得分:0)
看一下这个链接,它可能会有所帮助: Polymorphism: Why use "List list = new ArrayList" instead of "ArrayList list = new ArrayList"?
用我自己的话来说,基本上,当你使用继承的对象时,它可以更容易地处理父对象的所有子对象之间的转换,并允许你为每个对象使用特定的方法。 / p>
干杯!
答案 1 :(得分:0)
这是多态性。 第一个:
A objectName = new B();
您可以更改objectName
引用的对象,而无需担心更改基本类型,如下所示:
objectName = new ChildOfA();
通过父类型实例化对象,只要通过父类型('A')
创建
例如:
List container = new ArrayList<A>();
container.add(new B());
container.add(new ChildOfA());
但是这个是不允许的,因此缺乏灵活性。
container = new ArrayList<B>();
container.add(new ChildOfA()); //error because childOfA is not of type of B