如何从包含HashMap实例的抽象类中实例化一个新对象?

时间:2015-01-29 06:08:49

标签: java polymorphism instantiation abstract

我认为抽象类无法实例化。但是,我在我的抽象类中有一个HashMap实例,我希望从中检索对象。有什么办法可以做到这一点吗?任何见解都会受到赞赏,提前谢谢!

编辑:

我实际上正在寻找一种使用诸如

之类的标记来实例化抽象类的方法
barnStack.push(new Animal("Cow"));

2 个答案:

答案 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!");

然而,在这种情况下,超类更可能不是真正抽象的。