域和静态方法不具有多态性:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 |
public class Test3 { public
static void main(String[] args) { Super sup = new
Sub(); System.out.println(sup.field); System.out.println(sup.getField()); } } class Super{ public
int field = 0 ; public
int getField(){ return
field; } } class
Sub extends
Super{ public
int field = 1 ; public
int getField(){ return
field; } } 运行结果是: 0 1 <br><br>为什么结果不是 1 和 1 呢?<br>域的操作都是由编译器解析的,不具有多态性。因此直接输出field的值为Super类型的值,而getField()方法是多态的,它在运行期决定。 |
原文地址:http://www.cnblogs.com/tmj-sh/p/3735245.html