下面的段落引用自 Bruce Eckel 所著的《Thinking in Java》一书。
我不明白,如何动态更改成员对象,以及它如何优于继承。
有人可以解释一下吗
最佳答案
如果您的类扩展 ArrayList
,则您的类的用户可以访问 ArrayList
的所有公共(public)方法。您不能更改您的类来扩展 LinkedList,因为这可能会破坏现有代码。
public class Inheritence extends ArrayList<String>
{
// here your class depends on ArrayList implementation
}
另一方面,如果您的类具有类型为
List
的私有(private)成员,则您的类的用户无法直接调用该成员的方法。您可以在运行时决定是将 ArrayList
实例分配给该成员,还是分配不同的 List
实现(LinkedList
或其他)。public class Composition
{
private List<String> member;
public Composition ()
{
// here you decide the type of your member during runtime
if (someCondition) {
member = new ArrayList<String>();
} else {
member = new LinkedList<String>();
}
}
}
关于java - Java中组合优于继承的优点,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41040783/