黑马程序员技术交流社区
标题:
关于this.
[打印本页]
作者:
suifeng1987
时间:
2016-8-21 23:06
标题:
关于this.
老师不是说this.的意思是谁来调用我,我就代表谁嘛,那这个调用到底是指的调用this的方法,还是调用的方法的对象?那父类引用子类对象的情况,在父类A中有个变量num=10,在子类B中有个变量num=20,都有print方法,A a = new B(); B继承了A print方法是 system.out.println(this.num);主方法a.print(); 打印出来的是10还是20 ,如果20那谁来调用我的调用是不是指的是调用this.的方法??
作者:
李昌运
时间:
2016-8-21 23:11
路过,没上到这里
作者:
lrwillinggerry
时间:
2016-8-22 00:21
看看引用的是父类还是子类
作者:
冬天有点冷
时间:
2016-8-22 00:48
a.print(); 父类子类都有print的方法时,因为动态绑定,编译会看父类是否有这个方法,如果有,执行子类的print()方法,否则会报错. this代表当前对象引用可以省略,系统默认会加上: 父类和子类中都有的变量,打印的是子类的20, 自己有就不用找父类了.
作者:
坚持努力wbj
时间:
2016-8-22 15:38
20
你是父类引用指向子类对象、
考虑输出是谁之前先考虑对象创建过程
创建子类对象时是先创建父类对象在创建子类对象
创建对象时是先属性(变量)初始化在执行构造方法
故这里的num的值先等于10,再等于20,
this代表当前对象
你可以理解了吗
作者:
gaofengdage
时间:
2016-8-22 15:45
编译看父类,运行看子类,都有print方法,就不会用父类的 system.out.println(this.num),而是用子类的....
作者:
a623562486
时间:
2016-8-22 16:00
也有点儿迷惑,进来看大神解答
作者:
阿卜
时间:
2016-8-22 17:53
非静态方法必须先创建对象,然后通过对象.方法名调用,this的“谁来调用我,我就代表谁”就代表的是调用这个方法的对象,例中this.name等效于对象名.name
作者:
胡eason
时间:
2016-8-22 21:21
加油!加油!加油!加油!
作者:
suifeng1987
时间:
2016-8-23 08:05
冬天有点冷 发表于 2016-8-22 00:48
a.print(); 父类子类都有print的方法时,因为动态绑定,编译会看父类是否有这个方法,如果有,执行子类的pri ...
明白了,就是前面的是引用,后面的是对象 ,是后面那个匿名对象调用的实际上,所以还是代表的是对象,谢了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2