A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© 湛添友 中级黑马   /  2014-3-26 16:07  /  1278 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public class Eencapsulation{
    public static void main(String[] args){
person Z=new person();
Z.setAge(24);
Z.speak();

    }

}
class person
{
private int age;
public void setAge(int a)
{
if(a>0&&a<150)
{
age=a;
}
else
System.out.println("非法年龄");
}
public int getAge()
{
return age;
}
void speak()
{
System.out.println(age);
}

}

又转不过弯了,类中speak()
为什么没有参数传入,它能知道并打印age?
一般的函数必须要有参数传入

评分

参与人数 1技术分 +1 收起 理由
枫儿 + 1 神马都是浮云

查看全部评分

8 个回复

倒序浏览
这个方法的功能就是输出语句.当它被调用的时候就会执行里面的语句.至于参数的话.如果要输出这个参数.或是需要参数运算的话才传
回复 使用道具 举报
在类创建对象时,类中私有成员变量age已经有值了,speak()方法打印的就是这个变量的值啊。用你的代码就是对象Z,Z调用的speak方法。
回复 使用道具 举报
optimisticpig 来自手机 中级黑马 2014-3-26 16:19:32
板凳
因为speck方法只有打印输出语句,而本类中的成员方法可以访问成员变量age
回复 使用道具 举报
因为类中已经有了age这个属性,类实力对象调用这个speck()方法时,就可以不用传参数就可以访问本身就有的属性
回复 使用道具 举报
你不是已经创建了一个对象z了吗,这个对象一创建就有年龄24,然后Z.speak();你就往speak()这个方法里面传了z这个对象的年龄,它运行System.out.println(age);就给你打印下年龄。
回复 使用道具 举报
aeg是成员变量。当你调用函数setAge(24),判断24满足条件,为age赋值为24,这个时候age已经有值了。但是如果你调用函数setAge()时,传入值不符合条件时,age是默认初始化时候的值0。

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
对象的成员属性在成员方法里是可见,所以成员方法speak()能直接对成员属性age访问,如果在成员方法里如果有与age同名局部age变量,在该方法内访问成员属性age必须加前缀this(即this.age)

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
MVP 中级黑马 2014-3-26 17:28:00
9#
Z.setAge(24)你在这里已经设置了成员变量age的值。你输出的话就可以直接使用类中的age,不需要另外传递参数。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马