为什么建议在扩展任何 RIM Screen 类时调用 super() 构造函数?据我了解,任何父类(super class)的无参数构造函数都是从任何扩展它的类隐式调用的,我错了吗?
最佳答案
无论你实现与否,super() 都会被默认构造函数调用。
测试很容易。只是几个类:
class ClassA {
public ClassA() {
UiApplication.getUiApplication().invokeLater(new Runnable() {
public void run() {
Dialog.inform("ClassA()");
}
});
}
}
class ClassB extends ClassA {
public ClassB() {
super();
UiApplication.getUiApplication().invokeLater(new Runnable() {
public void run() {
Dialog.inform("ClassB()");
}
});
}
}
class ClassC extends ClassA {
}
class ClassD extends ClassA {
public ClassD() {
UiApplication.getUiApplication().invokeLater(new Runnable() {
public void run() {
Dialog.inform("ClassD()");
}
});
}
}
和测试应用:
class Scr extends MainScreen {
protected void makeMenu(Menu menu, int instance) {
super.makeMenu(menu, instance);
menu.add(new MenuItem("class A", 0, 0) {
public void run() {
ClassA a = new ClassA();
}
});
menu.add(new MenuItem("class B", 0, 0) {
public void run() {
ClassB b = new ClassB();
}
});
menu.add(new MenuItem("class C", 0, 0) {
public void run() {
ClassC c = new ClassC();
}
});
menu.add(new MenuItem("class D", 0, 0) {
public void run() {
ClassD d = new ClassD();
}
});
}
}
所以你看,ClassA() 和 ClassC() 中的对话调用没有区别,ClassB() 和 ClassD() 之间也没有区别。
关于java - Blackberry Screen 类中的 super 构造函数调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1790676/