黑马程序员技术交流社区

标题: 心存疑虑,请明白的帮我答题解惑! [打印本页]

作者: 728503435    时间: 2015-4-21 13:04
标题: 心存疑虑,请明白的帮我答题解惑!
/*需求:给人定义一个用于比较年龄是否相同的功能,也就是是否是同龄
this的应用:当定义类中功能时,该函数内部要用到调用该函数的对象时,这个时候要用到thi

当定义类功能时候,该函数内部要用到调用该函数的对象时,这个时候用到this,this表示这

个对象



*/
class person
{        private String name;
        private int age;
        person(int age)
        {
        this.age=age;
        }


        public boolean compare(person p)
        {
        return this.age==p.age;
               
        }

}

class personDemo
{ public static void main(String[] args)
        {person p1=new person(55);
        person p2=new person(66);
        System.out.println(p1.compare(p2));
        }
}

关于this的问题都明白了:this代表p1也就是代表一个对象,那个对象调用这个方法代表那个对象
关键问题是:为什么这里不能把this去掉,换成p1也就是p1.age==p.age为什么不行?希望详细解答
作者: 1352107393    时间: 2015-4-21 13:34
本帖最后由 1352107393 于 2015-4-21 13:44 编辑

this表示当前类里的age属性,而p.age是参数对象(p)里的age,p1,p2都是你实例化的对象
如果你用p2.complate(p1);那么那个this就代表p2,p就代表p1。


作者: 728503435    时间: 2015-4-21 13:43
1352107393 发表于 2015-4-21 13:34
this表示当前类里的age属性,而p.age是参数对象(p)里的age,
你那个p1,p2都是实例化的对象
...

p1.age表示什么?为什么p1.age无法调用到已经初始化p1里面的参数age

作者: 1352107393    时间: 2015-4-21 13:46
本帖最后由 1352107393 于 2015-4-21 13:47 编辑
728503435 发表于 2015-4-21 13:43
p1.age表示什么?为什么p1.age无法调用到已经初始化p1里面的参数age

private age;
你这定义的私有变量,需要定义setter和getter方法,才能调用的class person
{        private String name;
        private int age;
        person(int age)
        {
        this.age=age;
        }


        public boolean compare(person p)
        {
        return this.age==p.age;
               
        }

     public int getAge(){
      return this.age;
     }  
}

作者: 728503435    时间: 2015-4-21 13:53
1352107393 发表于 2015-4-21 13:46
private age;
你这定义的私有变量,需要定义setter和getter方法,才能调用的class person
{        privat ...

你的回答有问题我的确私有化了没错,可是我在新建对象的时候已经初始化了,在初始化里面我给age赋值了
作者: xgd6612    时间: 2015-4-21 14:08
....个人理解。上面封装的是一个函数,是从基础中抽象出来的共性,如果用p1.age替换this的话  你没必要写在外面了。在上面是其他调用起来方便 提高复用性,如果用p1代替this的话就只能用一次了~~~。
作者: Oh.Ba    时间: 2015-4-21 14:14
我觉得一个是初始化,之后的是调用。有所不同
作者: itheima_llt    时间: 2015-4-21 15:41
不知该说些什么。。。。。。就是谢谢
作者: itheima_llt    时间: 2015-4-21 16:23
真的很有用,谢谢啦!
作者: itheima_llt    时间: 2015-4-21 18:12
非常谢谢楼主,顶一下




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