【发布时间】:2014-12-27 04:47:33
【问题描述】:
如果你永远不会从那个类实例化一个对象,你什么时候会使用它的构造函数?对不起,如果我表现得无知。我刚在高中开设了 Java 课程。
【问题讨论】:
-
any类中构造函数的意义在于初始化类的状态。
-
Abstract类可能具有与其父类不同的初始化要求,或者可能需要充当它们的代理。它们也可以作为实现的便利
标签: java
如果你永远不会从那个类实例化一个对象,你什么时候会使用它的构造函数?对不起,如果我表现得无知。我刚在高中开设了 Java 课程。
【问题讨论】:
Abstract 类可能具有与其父类不同的初始化要求,或者可能需要充当它们的代理。它们也可以作为实现的便利
标签: java
你可以在父类中初始化一些东西,所以也许你需要抽象类中的构造函数。
【讨论】:
您有一个构造函数,因此子类可以正确初始化其父类的状态。
public abstract class Parent {
private final String name;
public Parent(String n) { this.name = n; }
public String getName() { return this.name; }
}
public class Child extends Parent {
public Child(String name) { super(name); }
}
没有其他方法可以在Parent 中初始化private final String name 属性没有构造函数。
【讨论】:
因为子类可能会使用它。例如:
public abstract class Foo {
protected String name;
public Foo(String name) {
this.name = name;
}
}
public class Bar extends Foo {
public Bar(String name) {
super(name); //<-- necessary, otherwise it won't compile
}
public Bar() {
super("default name"); // <-- necessary, otherwise it won't compile
}
}
【讨论】:
您的父类或抽象类通过所有子类或子类存储公共变量。 这使得将不同的对象(具有相同的父对象)存储到诸如 ArrayList 之类的集合中变得更加容易。 它还允许您轻松地操作和对象,而不必担心包含在子类中的细节。 您确实通过在子类中调用 super() 来实例化构造函数。
【讨论】: