老师,一个小问题

老师,一个小问题

先上代码:

//非测试类
public class People{
    //成员属性:名字
    private String name;
    
    public People(String name){
        this.setName(name);
    }
        
    public void setName(String name){
        this.name=name;
    }

    public String getName(){
        return this.name;
    }   
}

//测试类
public class Test{
    public static void main(String[] args){
        People one=new People("猪头阿三");
        System.out.println(one.getName());
}
}

老师,这是一个代码例子,我的问题并不大,但就是想不通:
在set方法里是this.name=name;在get方法里是:return this.name;
我的问题是,既然name被private修饰限定了,不是同类不可以访问name,this在当前指代的是one,它是在测试类里被实例化的,
既然不同类,怎么还能用this去调用?


正在回答

登陆购买课程后可参与讨论,去登陆

1回答

你好!this表示当前类的引用,在People类中使用时,this就表示People类当前的引用,同理,被Test类使用时,就表示Test类当前的引用。这个是this本身的含义

    在Test类中定义类People的对象one,对于one来说,此时People类中的this就相当于是one,跟是不是同类没有关系。

 如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • 鱼儿0001 提问者 #1
    老师,定义有点抽象啊,理解有点困难,什么是当前类的引用?
    2019-04-27 10:41:44
  • 好帮手慕珊 回复 提问者 鱼儿0001 #2
    可以理解成,如果定义了一个对象one,那么this就是表示one。同样,如果定义另一个People类的对象two,this就是表示two。所以this一直表示那个正在用的对象。其实,关于this,现阶段最主要的是知道如何使用,一般就使用到this.name这种形式去表示类的成员变量的名字,后面还会使用this去表示当前类的构造方法的调用,这些就是this的主要应用了。建议在初学阶段,先学会使用,有些内容的理解需要结合一定的应用场景,初学的时候案例规模不会太大,随着后面学习的深入,会对这些概念性的内容有更好的理解。祝学习愉快!
    2019-04-27 11:26:52
  • 再啰嗦两句,同学不要嫌啰嗦哈。面向对象是很难的一部分内容,有些程序员工作一两年了也不一定对面向对象有特别深刻的理解,因为确实比较抽象。所以一开始学习的时候,我们都会强调应用,编程学习的就是语法,所以要先把语法规则熟悉并用起来,后面再通过案例和练习去磨练,去深入理解。祝学习愉快!
    2019-04-27 11:31:37
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师