在继承多态中关于this的使用

匿名 (未验证) 提交于 2019-12-03 00:22:01

通过this调用method和filed的区别

在继承多态中:
1、对于方法的覆盖,new的谁就调谁,这就是多态。
2、对于成员变量的覆盖,this在哪个类就指向哪个类的成员变量,没有多态。
public class ThisTest {     @override       public void Test(){           Fu f = new Zi();                      System.out.println(f.num);//这里定义的是父类,而成员变量没有多态,所以即使你new的子类,依然指向父类的成员变量。           System.out.println(f.fun1());//不解释了,就是多态。           f.show();       }   }      class Fu {       public String num = "父类成员变量";          public void show() {           System.out.println(this.num);//因为成员变量没有多态,所以this指向当前类对象的成员变量。           System.out.println(this.fun1());//因为方法有多态,所以this指向new对象的方法。           System.out.println(this);//打印的是子类对象     }              public String fun1() {           System.out.println(this.num);//因为成员变量没有多态,所以this指向当前类对象的成员变量。           return "父类调用";       }   }      class Zi extends Fu {       public String num = "子类成员变量";              public String fun1() {           System.out.println(this.num);//因为成员变量没有多态,所以this指向当前类对象的成员变量。           return "子类调用";       }   } 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!