我正在开发Android应用程序,不知怎的,我应该在没有超级关键字的方法中调用“超级”。我可以用类的实例调用super吗?例如:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
如何在不使用超级关键字的情况下调用 super.onCreate(savedInstanceState) ?
更新1 我试过了,但这也不行。
@Override
public void onCreate(Bundle savedInstanceState) {
try {
getClass().getSuperclass().getMethod("onCreate",Bundle.class).invoke(this,savedInstanceState);
}
catch (IllegalAccessException e) {
e.printStackTrace();
}
catch (InvocationTargetException e) {
e.printStackTrace();
}
catch (NoSuchMethodException e) {
e.printStackTrace();
}
}
注意:请理解我在说什么。不要说'打电话给超级()'。
答案 0 :(得分:3)
不调用super
方法通常是非常糟糕的想法,特别是在涉及活动生命周期时。实际上,如果未调用活动生活方式事件的super
方法,则活动将崩溃而不会失败。
通过在方法上使用@Override
,您正在修改其功能以执行您需要的任务,即声明视图。但是,父类可能需要执行与应用级开发人员无关的其他重要事项,即设置状态或标志。如果某个方法被设计为由应用级开发人员完全实现而没有执行任何父代码,则会将其声明为abstract
或interface
的一部分。
进一步阅读:
答案 1 :(得分:-1)
public class A {
static void m1() {
System.out.println("m1 P");
}
}
class B extends A {
static void m1() {
System.out.println("m1 C");
}
}
class Test {
public static void main(String[] args) {
A a = new B();
A.m1();
}
}