Java:在编程使用方面,下面的对象创建方法有什么区别?

时间:2015-03-30 10:12:58

标签: java inheritance instance

public class SuperClass {}
public class ChildClass extends SuperClass {}

SuperClass  A = new ChildClass();

ChildClass B  = new ChildClass(); 

两个实例A& B,我们只能访问超类的受保护方法。那么两者之间有什么区别?它们开始使用哪些地方?提前致谢

2 个答案:

答案 0 :(得分:0)

a.getClass().getName();

为什么这很重要?

public class SuperClass {}
public class SonClass extends SuperClass {}
public class DaughterClass extends SuperClass {}

SuperClass[] Arr = new SuperClass[2];
Arr[0] = new SonClass();
Arr[1] = new DaughterClass()

答案 1 :(得分:0)

与A相比,其他公共方法B将提供什么以及客户端代码将如何使用所创建的实例。

如果您选择ListArrayListList是一个界面,但它对该示例有效),您经常会选择自己的类实现功能:ArrayList是一个自动增加的向量,提供对其元素的持续访问。但是该类的客户端可能并不真正关心List实现的类型,并且您可以更灵活地将此实例用作提供列表抽象的简单List

另一个案例是多态性。如果您使用其他类扩展您的示例,例如

 public class AnotherChildClass extends SuperClass {}

您需要处理来自2个子类的对象列表,例如

List<SuperClass> myList = new ArrayList<>();
myList.add(new ChildClass());
myList.add(new AnotherChildClass());
myList.add(new ChildClass());
//...

// later
(for (SuperClass s : myList) {
   s.doSomeThing();
}

如果方法doSomeThing()已在SuperClass中声明并由两个子类实现(或在SuperClass中实现并可能被覆盖)。

您的问题涉及OOP的基本部分abstraction