Java 如何在扩展类构造函数中调用抽象类的构造函数
因此,对于我的家庭作业,我必须创建一个抽象类,它有几个扩展类。我被困在一个地方。在我的课程中,似乎找不到任何地方告诉我如何调用抽象类的构造函数。这是我老师的指示Java 如何在扩展类构造函数中调用抽象类的构造函数,java,class,constructor,abstract,extends,Java,Class,Constructor,Abstract,Extends,因此,对于我的家庭作业,我必须创建一个抽象类,它有几个扩展类。我被困在一个地方。在我的课程中,似乎找不到任何地方告诉我如何调用抽象类的构造函数。这是我老师的指示 MyMath's constructor will just call Homework's constructor and again have no arguments. 这是我为抽象构造函数编写的代码: public Homework(){ pagesRead = 0; typeHomework = "none"
MyMath's constructor will just call Homework's constructor and again have no arguments.
这是我为抽象构造函数编写的代码:
public Homework(){
pagesRead = 0;
typeHomework = "none";
}
在MyMath课上,我应该在MyMath的构造函数中调用这个构造函数,我不知道该怎么做,我在我们上过的任何其他课程中都找不到它。非常感谢您的帮助:)如前所述,当您创建子类对象时,将自动调用超级类构造函数。或者,可以通过super()显式调用它。此外,如果您的超类没有默认构造函数,则必须显式地调用它
public abstract class Homework
{
public Homework(int i)
{
...
}
}
public class MyClass extends Homework
{
public MyClass()
{
super(5);
}
}
如前所述,当您创建子类对象时,将自动调用超级类构造函数。或者,可以通过super()显式调用它。此外,如果您的超类没有默认构造函数,则必须显式地调用它
public abstract class Homework
{
public Homework(int i)
{
...
}
}
public class MyClass extends Homework
{
public MyClass()
{
super(5);
}
}
通过调用子类的构造函数,还有其他方法吗?调用子类构造函数将自动调用父类构造函数,即使您没有明确地编写代码,也可以调用子类构造函数中第一行为
super()
的超类构造函数。您可以像调用任何其他超类构造函数一样调用抽象类的构造函数:要么隐式调用(仅当它不需要参数时),要么通过@JackFlamp提到的super(/*…*/)
,要么显式调用,要么向其传递参数。对于一个抽象类来说,有一个公共的
构造函数是很奇怪的(与受保护的
相反),尽管我认为这没有什么区别……通过调用子类的构造函数,还有什么其他的呢?调用子类构造函数将自动调用父类构造函数,即使您没有明确地编写代码,也可以调用子类构造函数中第一行为super()
的超类构造函数。您可以像调用任何其他超类构造函数一样调用抽象类的构造函数:要么隐式调用(仅当它不需要参数时),要么通过@JackFlamp提到的super(/*…*/)
,要么显式调用,要么向其传递参数。抽象类有一个public
构造函数是很奇怪的,尽管(与protected
相反),但我认为这没有什么区别……”此外,如果你的超类没有默认构造函数,你也必须显式调用它。”不完全一样。如果超类没有零参数构造函数,则必须显式调用它。它不必是默认构造函数,通常也可能不是。(默认构造函数是零参数构造函数,但并非所有零参数构造函数都是默认构造函数——有些是显式提供的。)“此外,如果您的超类没有默认构造函数,则必须显式调用它。”不完全是这样。如果超类没有零参数构造函数,则必须显式调用它。它不必是默认构造函数,通常也可能不是。(默认构造函数是零参数构造函数,但并非所有零参数构造函数都是默认构造函数——有些是显式提供的。)