为了账号安全,请及时绑定邮箱和手机立即绑定

Java this关键字疑问

Java this关键字疑问

慕莱坞森 2019-02-19 14:43:32
public abstract class Demo{ public Demo(){ this.print(); } public abstract void print(); } public class NewDemo extends Demo{ public NewDemo (){ this.print(); } @Override public void print() { System.out.println("NewDemo"); } } public class Test{ public static void main(String args[]){ NewDemo a =new NewDemo (); } } Java中this关键字不是指向当前对象。为啥在Demo构造器中能调用子类的print()方法?抽象类的中的this指向谁?
查看完整描述

5 回答

?
一只名叫tom的猫

TA贡献1906条经验 获得超3个赞

Java中this关键字不是指向当前对象?

是的。

但是,你需要实例化才能得到对象。而你无法实例化一个抽象类,只能实例化它的非抽象子类。比如你代码里的:

NewDemo a =new NewDemo ();

这时this是指向的是对象a
Demo类中的this指的是实例化它得到的对象的引用。
建议题主先好好理解java的基本概念。

查看完整回答
反对 回复 2019-03-01
?
波斯汪

TA贡献1811条经验 获得超4个赞

this难道不是指向实例化时候的对象么?另外,你Test里调用的不是NewDemo么?Demo就是一个抽象类不提供调用的吧?

查看完整回答
反对 回复 2019-03-01
?
心有法竹

TA贡献1866条经验 获得超5个赞

this就是指当前对象,这个毋庸置疑,Demo类中的this其实是继承Demo的普通类的实例对象,因为抽象类是不能实例化的,而这个继承Demo的普通类必须要实现print方法,所以完全可以调用print方法啊。题主可以多体会下多态,继承的概念,要细细品味。

查看完整回答
反对 回复 2019-03-01
?
慕标琳琳

TA贡献1830条经验 获得超9个赞

可以把字节码拿出来看看哪些是动态的哪些是静态的。

查看完整回答
反对 回复 2019-03-01
?
扬帆大鱼

TA贡献1799条经验 获得超9个赞

this代表当前对象。如果你看不惯this可以把this去掉

查看完整回答
反对 回复 2019-03-01
  • 5 回答
  • 0 关注
  • 549 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号