我是新手。所以,我找不到确切的词来解释我想做什么。我会尽力解释。
我创建了一个扩展一些基类的类。在基类中,我有一些方法使用对象特定信息来运行。我的意思是我们用构造函数定义。
因此,在扩展我的基类的类中,我使用super创建了一个构造函数,我可以在构造函数中调用一些基类方法,以便在创建对象后自动运行。
就像那样:
class Base {
String someInfo;
Base(String someInfo) {
this.someInfo = someInfo;
}
String someMethod() {
return someInfo;
}
}
class MClass extends Base {
MClass(String someInfo) {
super(someInfo);
someMethod();
}
}
答案 0 :(得分:1)
你的问题更多的是关于理论,而不是实践。
在实践中 - 你可以。但你不应该这样做。这是关于代码嗅觉和难以发现的错误的可能性。看看这个样本
class Base {
private final String t;
private final int length;
Base(String t) {
this.t = t;
length = this.t.length();// here you'll got NullPointerException
}
}
class Override {
Override() {
super(calculate());
}
String calculate() {
return "Override";
}
}
class OverrideB {
private final String b = "some string";
OverrideB() {
}
String calculate() {
return b;
}
}
在当前示例中,当您尝试创建OverrideB
个实例时,您将获得NullPointerException
- 因为b
当前未被实例化(您可以自己检查 - 它是关于构造函数调用的顺序)。
但你必须有选择来避免这个问题:
PS根据班级名称约定,您应将mClass
命名为MClass
。