黑马程序员技术交流社区

标题: 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 编辑
  1. class Dog {
  2.         private String name;
  3.         private int age;
  4.         private boolean sex;

  5.         public String getName() {
  6.                 return name;
  7.         }

  8.         public void setName(String name) {
  9.                 this.name = name;
  10.         }

  11.         public int getAge() {
  12.                 return age;
  13.         }

  14.         public void setAge(int age) {
  15.                 this.age = age;
  16.         }

  17.         public boolean isSex() {
  18.                 return sex;
  19.         }

  20.         public void setSex(boolean sex) {
  21.                 this.sex = sex;
  22.         }

  23.         // 定义一个无参的构造
  24.         public Dog() {
  25.         }

  26.         // 有一个参数的构造函数
  27.         public Dog(String name) {
  28.                 this.name = name;
  29.         }

  30.         // 有两个参数的构造函数
  31.         public Dog(String name, int age) {
  32.                 // 这里的this调用本类中的name构造
  33.                 this(name);
  34.                 this.age = age;
  35.         }

  36.         public Dog(String name, int age, boolean sex) {
  37.                 // 调用本类中的name和age构造
  38.                 this(name, age);
  39.                 this.sex = sex;
  40.         }

  41.         // 这里面的this代表调用当前方法的对象
  42.         public void run() {
  43.                 String xb = "";
  44.                 if (this.isSex() == true) {
  45.                         xb = "雄性";
  46.                 } else {
  47.                         xb = "雌性";
  48.                 }
  49.                 System.out.println("狗的姓名是:" + this.getName() + "狗的年龄是:" + this.getAge() + "狗的性别是:" + xb);
  50.         }
  51. }
  52. //测试类
  53. public class DogTest {
  54.         public static void main(String[] args) {
  55.                 Dog d1 = new Dog("jerry");
  56.                 Dog d2 = new Dog("Tom",15);
  57.                 Dog d3 = new Dog("Dog",20,true);
  58.                 d1.run();
  59.                 d2.run();
  60.                 d3.run();
  61.         }
  62. }
复制代码

你这个解释不是很恰当,不知道你从哪看到的资料是这样写的 首先this在构造函数中的使用如你这样是没有任何意义的。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2