public class SuperClass {}
public class ChildClass extends SuperClass {}
SuperClass A = new ChildClass();
ChildClass B = new ChildClass();
两个实例A& B,我们只能访问超类的受保护方法。那么两者之间有什么区别?它们开始使用哪些地方?提前致谢
答案 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将提供什么以及客户端代码将如何使用所创建的实例。
如果您选择List
和ArrayList
(List
是一个界面,但它对该示例有效),您经常会选择自己的类实现功能: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。