黑马程序员技术交流社区
标题: 我想问this关键字上,毕老师说的我没有懂。各位懂得告我吧 [打印本页]
作者: jiangwenjun 时间: 2015-2-11 02:21
标题: 我想问this关键字上,毕老师说的我没有懂。各位懂得告我吧
this语句:
用于构造函数之间进行互相调用。如:this(name);
this语句只能定义在构造函数的第一行。因为初始化要先执行。
上面试毕老师的原笔记!第一句我不太懂!用于构造函数之间的互相调用。
那么我下面代码 方法show(),为什么可以使用this语句,不是在构造函数之间互相调用吗?
我知道这里是可以的,但我不理解毕老师这句的用意。
懂得同学,告诉我行吗?谢谢了!
- class Person
- {
- private String name;
- private int age;
- Person(int age)//局部变量时age,成员变量也是age
- {
- this.age = age;//this能够很好区分
- }
- Person(String name)
- {
- this.name = name;//这里用this表示调用构造方法的对象
- }
- Person(String name,int age)
- {
- this.name = name;
- this.age = age;
- }
-
- public void speak()
- {
- System.out.println("name="+name+"...age="+age);
- show();
- }
- public void show()
- {
- System.out.println(this.name);
- }
- }
- class Test
- {
- public static void main(String[] args)
- {
- Person p = new person();
- p.person(将军,18);
- p.speak();
- }
- }
复制代码
作者: jiangwenjun 时间: 2015-2-11 02:27
补充:::this的两种用法:1、用于区分同名变量的情况,说的成员和局部同名的时候;2、用于构造函数间调用。
注:一般函数不能直接调用构造函数,因为this语句不能用在一般函数中,只能用在构造函数间。
这个也是毕老师的原笔记
一般函数不能用this,只能用在构造函数间。
作者: jiangwenjun 时间: 2015-2-11 02:31
代码出错了 这个才对
- package com.itheima;
- class Person
- {
- private String name;
- private int age;
- Person(int age)//局部变量时age,成员变量也是age
- {
- this.age = age;//this能够很好区分
- }
- Person(String name)
- {
- this.name = name;//这里用this表示调用构造方法的对象
- }
- Person(String name,int age)
- {
- this.name = name;
- this.age = age;
- }
-
- public void speak()
- {
- System.out.println("name="+name+"...age="+age);
- show();
- }
- public void show()
- {
- System.out.println(this.name);
- }
- }
- class Testf
- {
- public static void main(String[] args)
- {
- Person p = new Person("将军",18);
- p.speak();
- }
- }
复制代码
作者: 书生灬流年 时间: 2015-2-11 07:34
首先你要知道毕老师这里所说的是this 语句,看过视频的应该知道老师这里说的语句其实是this();也就是在构造函数中使用的。通常是构造函数进行初始化赋值还有调用本类其它构造函数(比如this(name);)。
至于你所说的第二个show()方法的调用,这里已经并不是this语句了(this()).所以这里跟毕老师说的并没有冲突。
this:所代表的是本类对象的引用。也就是那个对象调用了this所在的函数this就代表那个对象。
所以show()方法这里是调用该方法的对象的引用。
作者: 瞿乐 时间: 2015-2-11 12:09
字节码文件 就是一个模板, 每次你使用这个模板做出一个对象来(new一个),this 就是指这个做出来的对象。做出那个出来了,this就是指那个对象。
作者: 瞿乐 时间: 2015-2-11 12:10
一般函数不能用this,只能用在构造函数间。
这句话是不对的,getter/setter都经常会用到的。
作者: guiqi225 时间: 2015-2-11 13:13
毕老师在介绍this语句时,说过一句话:实际没有this语句 ,只是毕老师对这种代码的一种说法。 个人认为,只有在构造器内,当调用本类其它构造器时,才称为this语句。在方法中this是一个关键字,代表this所在非静态方法的所属对象的引用
作者: cly成子 时间: 2015-2-11 14:40
基本上综合上面的补充就对了~
作者: konglingzhiyu 时间: 2015-2-11 20:05
this:所代表的是本类对象的引用。也就是那个对象调用了this所在的函数this就代表那个对象。
所以show()方法这里是调用该方法的对象的引用。
作者: ~我思故我在~ 时间: 2015-2-11 20:45
this不仅仅只是用于构造函数间的调用,也可以用于成员变量同名的情况下
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |