我想我在不同位置放置一个超级功能会对功能产生任何影响。
public void test(){
super.test()
// my code
}
和
public void test(){
//my code
super.test()
}
它完全一样吗?
答案 0 :(得分:2)
如果在代码之前调用超类方法test()
,则在执行名为my code
的子类方法代码之前将调用超类方法。执行顺序将根据您在方法中的顺序而变化。
答案 1 :(得分:2)
不,不一样。在第一个例子中,首先执行超类的方法,而在第二个例子中,它最后执行。这个小例子将证明这一点:
考虑一下:
class Main
{
public static void main (String[] args) throws java.lang.Exception
{
new Child().test(5);
}
}
class Parent {
public void test(int a){
System.out.println(a);
}
}
class Child extends Parent{
@Override
public void test(int a){
super.test(a);
a++;
}
}
它将打印5.
但是,如果我将超级调用放在重写测试方法的末尾,
class Child extends Parent{
@Override
public void test(int a){
a++;
super.test(a);
}
}
它将打印6。
答案 2 :(得分:1)
不,不是。 test()方法中的代码是按顺序运行的。
因此,请致电
new B().test();
new C().test();
在
class A {
public void test() {
System.out.print("A");
}
}
class B extends A {
public void test() {
System.out.println("B");
super.test();
}
}
class C extends A {
public void test() {
super.test();
System.out.println("C");
}
}
将导致输出:
BA
AC