首先看一下这篇博客介绍:http://blog.csdn.net/ccpat/article/details/44515335
下面贴段代码
1 package com.xujingyang.test; 2 3 public class Demo { 4 public static void main(String[] args) { 5 Fu f = new Zi(); 6 7 System.out.println(f.num);//这里定义的是父类,而成员变量没有多态,所以即使你new的子类,依然指向父类的成员变量。 8 System.out.println(f.fun1());//不解释了,就是多态。 9 f.show(); 10 System.out.println(f.getClass()); 11 } 12 } 13 14 class Fu { 15 public String num = "父类成员变量"; 16 17 public void show() { 18 System.out.println(this.num);//因为成员变量没有多态,所以this指向当前类对象的成员变量。 19 System.out.println(this.fun1());//因为方法有多态,所以this指向new对象的方法。 20 } 21 22 public String fun1() { 23 System.out.println(this.num);//因为成员变量没有多态,所以this指向当前类对象的成员变量。 24 return "父类调用"; 25 } 26 } 27 28 class Zi extends Fu { 29 public String num = "子类成员变量"; 30 31 public String fun1() { 32 System.out.println(this.num);//因为成员变量没有多态,所以this指向当前类对象的成员变量。 33 return "子类调用"; 34 } 35 }
结果: