public class Superclass
{
public Superclass(int x) {}
public Superclass(String y) {}
}
public class Subclass extends Superclass
{
public Subclass()
{
super(5); // chain to Superclass(int) constructor
}
}
public class Singleton
{
private static final Singleton instance = new Singleton();
private Singleton()
{
// Prevent instantiation from the outside world (assuming this isn't
// a nested class)
}
public static Singleton getInstance() {
return instance;
}
}
11条答案
按热度按时间agxfikkp1#
在派生类中,可以创建具有相同签名的新构造函数,但这并不是真正的重写,因为在初始化该类时,父类的构造函数仍在新构造函数之前被调用。
类的构造函数可以是私有的,也可以是受保护的,当然也可以是公共的。但是,如果它是受保护的或私有的,您将如何初始化该类实际上你可以在那个类中使用一个静态函数……)
j2datikz2#
试试这个:http://www.javabeginner.com/learn-java/java-constructors 1->否2->是
wooyq4lh3#
不,我们不能重写构造函数,为了实现单例模式,我们应该有一个私有构造函数。
jgovgodb4#
不,我们不能在类外使用构造函数,因为子类将构造函数视为方法。。没有返回类型。
您可以将其用作私有对象,但如果类的构造函数是私有的,则不能将受尊重类的obj转换为另一个类。
7tofc5zh5#
1) 不!构造函数属于声明它的类。子类是另一个类,必须有自己的构造函数。因此,构造函数不能被重写。
2) 是的,在单身的情况下通常是这样的。
ukxgm1gy6#
1) 这仅仅是家庭作业问题,还是你在试着做些什么?你能用一个重写构造函数展示你想要达到的目标吗?
由于首先调用父构造函数,因此可以在构造函数中根据需要修改基类。当然,只要对基本属性的访问不是私有的。如果您扩展了一个类,但不喜欢它们的私有属性,则从中派生是一个错误。
2) 构造函数可以是私有的吗?
是的,但是你知道它有什么用吗?
46qrfjad7#
不能重写构造函数,但是可以将其设置为任何访问级别修饰符,如public、private或default。你可能需要一个私有的构造函数,比如一个单例或者一个主要由静态方法构成的类(比如java的数学类)
jei2mxaa8#
您可以使用回调:
在父类中:
儿童:
uxhixvfz9#
这两个都不是真的,因为当一个类继承另一个类时,它会自动调用其父类,所以我们不能重写它们并使它们成为final。
ui7jx7zq10#
构造函数是用于类的。它在任何情况下都不能被推翻。就像是想把法拉利的工厂从宝马的工厂改过来(这是不现实的)。当然,您可以重载以获得所需的功能。
是的,构造函数可以是私有的。通过将其私有化,您不会让外部世界直接通过构造函数创建它的对象,但是singleton模式使用公共静态方法来调用类的构造函数,并且可以创建对象。
dhxwm5r411#
不,不能重写构造函数。它们不是遗传的。但是,每个子类构造函数必须链接到子类中的另一个构造函数或超类中的一个构造函数。例如:
构造函数未被继承的含义是您不能这样做:
至于第二个问题,是的,构造函数可以是私有的。它仍然可以在类或任何封闭类中调用。这对于单件物品很常见:
如果您有一个只包含静态方法的实用程序类,私有构造函数也可以用来防止任何示例化。