最近,我一直在使用XML解析器。这对我来说仅仅是个开始,我设法了解了如何在Java即使用DOM解析器类,DocumentBuilderFactory
以及DocumentBuilder
如何解析XML文档。
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
我想问自己的是如何允许抽象类(例如DocumentBuilderFactory
和)DocumentBuilder
实例化新实例?然后在另一个示例中,我看到:
Calendar calendar = Calendar.getInstance();
System.out.println(calendar.get(Calendar.DATE));
getInstance()
和newInstancce()
方法创建上面的抽象类的实例?我是否缺少使用抽象类及其新对象的内容?
该方法是一个 抽象工厂方法
,它返回一个 子类 的DocumentBuilder
,它是一种(混凝土)执行。
知道对象的确切类别并不重要,您只需要知道它是一个即可DocumentBuilder
。该方法可以返回在运行时决定的实例,或者在其认为合适时预定的实例。
如果您想知道,可以打印出实际的类,如下所示:
System.out.println(dbf.getClass());
请注意,该方法newInstance()
不要与的相同名称的方法混淆Class
,即,这两者是不同的:
// a static method of this class
DocumentBuilderFactory.newInstance();
// an instance method of Class
DocumentBuilderFactory.class.newInstance();
不幸的名字选择肯定会引起混乱。
问题内容: 我创建了一个空的抽象类,并从中继承了该类: 我期望输出是 但是,我得到的是 如果我删除(这样就变成一个普通的类)和/或如果我设置了其他值,问题(显然)就消失了。 这里发生了什么? 问题答案: 这实际上不是ABC的问题,而是PyMongo的问题。有一个关于它的问题在这里。似乎pymongo重写以返回某种数据库类。这意味着将返回一个数据库对象,该对象在布尔上下文中为true。这使ABCMe
我查过了,发现最接近的是这个,除了我没有任何向前的声明。我在基类中只有一个纯虚函数,我在子类中实现它,如下所示: 命令H 命令cpp 数字H 数字cpp 发生文件错误: 一个dd.cpp 添加H
问题内容: 我已经开始学习用于Android应用程序开发的Java语言。 根据我对静态类的理解,我们无法实例化静态类的对象。 但是,为什么在随后的情况下允许实例化静态嵌套类对象? 如果将内部类的对象标记为静态,为什么我们可以创建它呢? 问题答案: 根据我对静态类的理解,我们无法实例化静态类的对象。 您对“静态类”的含义的理解不正确。基本上, Java中 的“静态类” 是嵌套类,它没有对包含类的实例
我正在学习OOP的概念。在阅读继承的过程中,我了解到在初始化子类之前必须先初始化超类,即所有超类的构造函数必须在子类构造函数之前运行。此外,我们还可以直接创建超级类的实例。对于例如。 现在,我遇到了抽象类。看来我们不能实例化一个抽象类。要使用抽象类,您必须从另一个类继承它,并为其中的抽象方法提供实现。 我的问题是,在实例化具体子类的同时,抽象超类的构造函数会在具体子类的构造函数之前被调用。如果是这
但是为什么在下面的情景中允许静态嵌套类对象的实例化呢? 为什么我们可以创建内部类的对象,如果它被标记为静态的?
问题内容: 最近,在一次采访中,有人问我一个非常笼统的问题:“ java中的抽象是什么”。我给出了定义,接着是关于抽象的其他问题,即什么是抽象方法以及抽象方法与具体方法之间的区别等。最后面试官要求我提供一个实时示例,说明我应该使用或将类定义为抽象类。我感到困惑。我给出了一些示例,但他没有被说服。 我用谷歌搜索,但没有找到真正的解决方案。 因此有人可以给我实时示例,即当他/她的项目中将类定义为抽象时