mul*_*aph 0 java oop constructor
在Java中,是否可以有两个名称不同的同一个类的构造函数?例如,假设我有课程 Test,我想要这样的东西
class Test
HashMap<Integer,Double> hsI;
HashMap<Double,Double> hsD;
Test() {
hsi = new HashMap<>();
}
Test2() {
hsi = new HashMap<>();
hsD = new HashMap<>();
}
}
Run Code Online (Sandbox Code Playgroud)
编辑: 我将解释为什么我会喜欢这个。
我有一个这样的课程,让我们称之为Class1:
public class Class1 {
private HashMap<Integer,ClassContainer> hm;
private class ClassContainer {
ClassContainer {
hm1 = new HashMap<>();
hm2 = new HashMap<>();
hm3 = new HashMap<>();
}
HashMap<Double,Double> hm1;
HashMap<Double,Double> hm2;
HashMap<Double,Double> hm3;
... //more code
}
Run Code Online (Sandbox Code Playgroud)
所以我想做几个子类Class1,但是在这个类中我不需要所有的hashmap ClassContainer,我想节省空间。例如,Class2 将扩展 Class1,但只需要 hm2;Class3 将扩展 Class1,但只需要 hm2 和 hm3。
我想要一种方法来初始化 ClassContainer 的必要部分以节省内存。我想使用子类,因为它们共享大量代码。
不,构造函数必须具有相同的类名。您可以做的最接近的事情是继承:
class Test {
HashMap<Integer, MyObject> hsI; // a map has two type arguments
Test() {
hsi = new HashMap<>();
}
}
class Test2 extends Test {
HashMap<Double, MyObject> hsD;
Test2() {
super();
hsD = new HashMap<>();
}
}
Run Code Online (Sandbox Code Playgroud)