黑马程序员技术交流社区
标题:
java中this有两种用法
[打印本页]
作者:
狗蛋洪广
时间:
2016-5-23 01:49
标题:
java中this有两种用法
1、代表当前类
public class Dog{
private String name;
private float age;
public setName(String name){
this.name = name;
}
.......
}
这里的this就代表的当前的这个Dog类。this.name可以理解为dog.name,只是理解,不是等于。
2、在构造函数中的使用
public class Dog{
private String name;
private int age;
//有一个参数的构造函数
public Dog(String name){
this.name = name;
}
public Dog(String name,int age){
this.name = name;
this.age = age;
}
//这个无参构造方法里调用的有两个参数的构造方法,这个也就是this的第二种用法了!
public Dog(){
this("nihao",20);
}
}
作者:
宝宝没嗑药
时间:
2016-5-23 07:41
很详细 受教了
作者:
tuan2016
时间:
2016-5-23 10:16
感谢分享,谢谢
作者:
a825105162
时间:
2016-5-23 10:41
本帖最后由 a825105162 于 2016-5-23 10:46 编辑
class Dog {
private String name;
private int age;
private boolean sex;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public boolean isSex() {
return sex;
}
public void setSex(boolean sex) {
this.sex = sex;
}
// 定义一个无参的构造
public Dog() {
}
// 有一个参数的构造函数
public Dog(String name) {
this.name = name;
}
// 有两个参数的构造函数
public Dog(String name, int age) {
// 这里的this调用本类中的name构造
this(name);
this.age = age;
}
public Dog(String name, int age, boolean sex) {
// 调用本类中的name和age构造
this(name, age);
this.sex = sex;
}
// 这里面的this代表调用当前方法的对象
public void run() {
String xb = "";
if (this.isSex() == true) {
xb = "雄性";
} else {
xb = "雌性";
}
System.out.println("狗的姓名是:" + this.getName() + "狗的年龄是:" + this.getAge() + "狗的性别是:" + xb);
}
}
//测试类
public class DogTest {
public static void main(String[] args) {
Dog d1 = new Dog("jerry");
Dog d2 = new Dog("Tom",15);
Dog d3 = new Dog("Dog",20,true);
d1.run();
d2.run();
d3.run();
}
}
复制代码
你这个解释不是很恰当,不知道你从哪看到的资料是这样写的 首先this在构造函数中的使用如你这样是没有任何意义的。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2