我认为抽象类无法实例化。但是,我在我的抽象类中有一个HashMap实例,我希望从中检索对象。有什么办法可以做到这一点吗?任何见解都会受到赞赏,提前谢谢!
编辑:
我实际上正在寻找一种使用诸如
之类的标记来实例化抽象类的方法barnStack.push(new Animal("Cow"));
答案 0 :(得分:1)
无法在java中实例化抽象类。 java oracle doc
所以你要做的就是创建一个扩展抽象类的新具体类。然后,您可以实例化具体的子类。
class ConcreteClassName extends AbstractClassName{
//implement all the methods of the abstract class
//optionaly you can add new methods if you want to
}
//获取抽象类的实例
AbstractClassName newObject = new ConcreteClassName();
现在你有了抽象类的实例。
答案 1 :(得分:1)
我假设你指的是这样的结构:
abstract class MyClass {
private Map<String, String> textMap = new HashMap<>();
public void addText(String key, String value) {
textMap.put(key, value);
}
}
如果无法实例化类,那么你问的是如何使用textMap
。如果这是正确的,那么答案是它可以被抽象类内部的方法使用(或者如果它是protected
的子类)。 MyClass
的子类的任何实例都可以调用将访问Map
的方法。
class MySubclass extends MyClass {
}
MySubclass myobj = new MySubclass();
myobj.addText("Hello", "World!");
也可以使子类匿名:
MyClass myObj = new MyClass() {};
myobj.addText("Hello", "World!");
然而,在这种情况下,超类更可能不是真正抽象的。