如果某个方法是静态的,它的行为就不具有多态性
程序员文章站
2022-03-03 16:14:24
...
下面这段代码输出的结果是:
public class Test {
public static void main(String args[]) {
Sub sub = new Sub();
System.out.println(sub.x); // 1
System.out.println(sub.n); // 2
System.out.println(sub.method1()); // 3
System.out.println(sub.method2()); // 4
Super supsub = new Sub();
System.out.println(supsub.x); // 5
System.out.println(supsub.n); // 6
System.out.println(supsub.method1());// 7
System.out.println(supsub.method2());// 8 分析:这里调用的应该是父类的该方法,因为该方法是静态的
Super sup = new Super();
System.out.println(sup.x); // 9
System.out.println(sup.n); // 10
System.out.println(sup.method1()); // 11
System.out.println(sup.method2()); // 12
System.out.println(sup.n); // 13
}
}
class Super {
int x = 1, y = 2;
static int n = 50;
int method1() {
return (x > y) ? x : y;
}
static int method2() {
return n--;
}
}
class Sub extends Super {
int method1() {
return (x < y) ? x : y;
}
static int method2() {
return n++;
}
}
运行结果是:
1
50
1
50
1
51
1
51
1
50
2
50
49
下一篇: volatitle 不具有原子性代码