Tag: 多态性

Java集合 – 对元素的多态访问

我有一个ThisH的LinkedHashSet值。 ThisType正在实现接口ThatType 。 我需要对此集合进行多态使用 – 能够将其指向LinkedHashSet 。 这是怎么做到的? 我知道这是一个天真的问题,但我试过的几件事情都行不通,我想以正确的方式去做。 提前致谢。 // ============================== 更新:更多细节: 在以下代码中, ThisType实现了ThatType – ThatType是一个接口。 //LinkedHashMap theMap = new LinkedHashMap(); LinkedHashMap theMap = new LinkedHashMap(); for (Integer key:intArray) { ThisType a = new ThisType(); if (theMap.containsKey(key)) { a = theMap.get(key); a.doStuff(); } else { a.doOtherStuff(); } theMap.put(key, a); } 最后,我想将theMap作为ThatType **的集合返回,而不是** ThisType 。 […]

是否可以使用扩展超类’方法参数的参数覆盖超类’方法?

说我有一个这样的课: abstract class Something {} 它有一个延伸它的类的层次结构: class FirstSomething extends Something {} class SecondSomething extends Something {} 然后在其他地方,我有一个课程利用这些东西: abstract class A { public void setSomething(Something something) { //Process the something } } 我能够指定A的子类,以便它覆盖setSomething方法,使用更具体的“某事”类吗? 这是我希望能够做到的: class B extends A { @Override public void setSomething(FirstSomething something) { //Process the something } class C extends A { @Override public […]

对象创建语法之间的区别

请解释对象一和二之间的区别: car one = new opel(); opel two = new opel(); 类欧宝扩展了类车。

inheritance和多态之间的区别

我正在研究多态性。 我无法确定Java中有关这两个function的类比。 让我们说Animal类是一个具体的超类, Cat和Dog作为它的子类。 我知道这是inheritance的一个例子。 但是不是Cat and Dog类, Animal类的多态? 我很清楚Java中的接口。 我无法理解为什么使用接口而不是具体类来解释多态。 可能是创建接口的整个目的是创建多态,但我想知道为什么接口而不是具体的类?

为什么它在子类对象中为超类变量存储或分配内存?

在以下代码中 – class Mammal { String name = “furry “; String makeNoise() { return “generic noise”; } } class Zebra extends Mammal { String name = “stripes “; String makeNoise() { return “bray”; } } public class ZooKeeper { public static void main(String[] args) { new ZooKeeper().go(); } void go() { Mammal m = new […]

Collections.sort使用什么设计模式?

以下列方式将比较器应用于列表时,使用的设计模式是什么或此处使用的技术是什么? Collections.sort(myCollection, new Comparator() { @Override public int compare(MyItem item1, MyItem item2) { return item1.getId().compareTo(item2.getId()); } });

将对象声明为接口有什么好处?

可能重复: “编程到界面”是什么意思? 我注意到有些人喜欢将对象声明为它实现的接口之一, 即使在变量范围内,也没有必要将其视为接口 ,例如,没有外部API需要接口。 例如: Map someMap = new HashMap(); 或者你可以这样做 HashMap someMap = new HashMap(); 并避免完全导入java.util.Map 。 通过接口(第一个上面)而不是类本身(上面第二个)声明它有什么好处? 谢谢

Java Polymorphism如何为子类对象调用超类方法

这是我想要问的一个例子 超类Name.java public class Name{ protected String first; protected String last; public Name(String firstName, String lastName){ this.first = firstName; this.last = lastName; } public String initials(){ String theInitials = first.substring(0, 1) + “. ” + last.substring(0, 1) + “.”; return theInitials; } 然后子类是ThreeNames.java public class ThreeNames extends Name{ private String middle; public ThreeNames(String aFirst, String […]

为什么多态不以同样的方式处理generics集合和普通数组?

假设类Dog扩展类Animal:为什么不允许这种多态语句: List myList = new ArrayList(); 但是,它允许使用普通数组: Animal[] x=new Dog[3];

Java中的多态性和接口(可以使用多态来实现接口……为什么?)

在现实世界中,人们使用它来解决什么类型的问题? 我可以看到这些协同工作的示例代码吗? 我能找到的只是关于猫狗说话或者喝牛奶或咖啡的人的代码…… 人们真的用接口实现多态吗? 做什么的?