回答
因为另一个类可以扩展它,并且子类需要调用超类的构造函数。当它的具体子类将被实例化
所有包括抽象类可以有constructors.Abstract类构造函数的类会被调用初始化字段。
想象你的抽象类有字段x和y,并且你总是希望它们以某种方式初始化,而不管最终创建了什么实际的具体子类。所以你创建一个构造函数并初始化这些字段。
现在,如果你有你的抽象类,两种不同的子类,当你实例化它们自己的构造函数将被调用,然后父类的构造将被调用,字段将被初始化。
如果您不做任何事情,父项的默认构造函数将被调用。但是,您可以使用super关键字在父类上调用特定的构造函数。
实施明智的你经常会里面的超级看到在子类的构造函数()语句,像:
public class A extends AbstractB{
public A(...){
super(String constructorArgForB, ...);
...
}
}
因为抽象类有状态(场),他们需要以某种方式初始化somethimes。
两个原因:
1)抽象类具有constructors
当一个具体子类实例化的构造函数总是被调用。我们知道,当我们要实例化一个类时,我们总是使用该类的构造函数。现在,每个构造函数都会调用超类的构造函数,并隐式调用super()
。
2)我们知道构造函数也用于初始化类的字段。我们也知道抽象类可能包含字段,有时候他们需要使用构造函数以某种方式初始化。
Debmalya达斯(SCJP&SCWCD) – Debmalya
我想这个问题的根源在于,人们认为,一个构造函数的调用创建的对象。事实并非如此。 Java无处宣称构造函数调用会创建一个对象。它只是做我们想要构造函数做的事情,比如初始化一些字段......就这些。所以被调用的抽象类的构造函数并不意味着它的对象被创建。
- 1. 的Java抽象类的构造函数
- 2. 抽象类中的构造函数有什么用处?
- 3. 在Java中为抽象类创建构造函数有什么用处?
- 4. Java:抽象类构造函数和this()
- 5. 在Java的抽象类中使用构造函数有什么意义?
- 6. 抽象类中的次构造函数的用例是什么?
- 7. 抽象类中的构造函数?
- 8. 抽象类中的构造函数?
- 9. 抽象类中构造函数的用法是什么?
- 10. 抽象类的构造函数
- 11. 呼叫从抽象类子类构造函数在Java中
- 12. 为什么我需要扩展抽象类中的另一个构造函数?
- 13. 抽象类和构造函数
- 14. 抽象类和构造函数
- 15. 抽象类,构造函数和接口
- 16. 抽象类,复制构造函数
- 17. 使用Java泛型的接口/抽象类的构造函数
- 18. 抽象类构造函数和普通类构造函数的区别?
- 19. 抽象类中的私有构造函数
- 20. C#可能有一个抽象类中的构造函数?
- 21. Java - 使用抽象类的构造函数
- 22. java构造函数有什么意义?
- 23. 在C#抽象类中的公共构造函数的实用性是什么?
- 24. “在抽象类中没有默认构造函数”
- 25. 在抽象类中有一个构造函数很好吗?
- 26. Java抽象类构造函数和新关键字
- 27. 确定抽象基类的构造函数是否为noexcept?
- 28. 子类构造函数 - 为什么必须为子类构造函数存在默认构造函数?
- 29. 什么类型的java构造函数是这些?构造函数链接?
- 30. 抽象参数构造函数
退房这个问题澄清,http://stackoverflow.com/questions/260666/abstract-class-constructor-in-java –
您需要一种方法来构建子类的抽象类。从技术上讲,抽象类上的公共构造函数实际上只是一个受保护的构造函数。 –