黑马程序员技术交流社区
标题:
封装问题
[打印本页]
作者:
黑白小調°
时间:
2014-1-7 21:25
标题:
封装问题
本帖最后由 黑白小調° 于 2014-1-8 19:27 编辑
/*这个程序中的 public int getAge()的作用是什么?可以省略或者写成其他形式吗?
{
return age;
}*/
class Person
{
private int age;
public void setAge(int a)
{
if(a>0&&a<130)
age=a;
speak( );
else
System.out.println("over");
}
public int getAge( )
{
return age;
}
void speak( )
{
System.out.println("age="+age);
}
class PersonDemo
{
public static void main (String[ ] args)
{
person P=new Person( );
P.setAge(40);
}
}
作者:
@翱翔@
时间:
2014-1-7 21:53
public int getAge()和 public void setAge(int a)是set/get方法;是子类获取父类的的私有属性的方法。
作者:
@翱翔@
时间:
2014-1-7 21:54
标题:
RE: 封装问题
本帖最后由 @翱翔@ 于 2014-1-7 21:56 编辑
public int getAge()和 public void setAge(int a)是set/get方法;是子类获取父类的的私有属性的方法。不能改成别的形式。
作者:
苏小惠
时间:
2014-1-7 21:55
public int getAge(){}方法的作用是:你把成员变量private私有化了,类外部的都访问不到这个成员变量age,这时一般情况下都需要向外界提供访问私有化成员变量的方法。一般格式是:返回值类型 getXxx(){};
但也可以自定义方法名
作者:
午夜b'Boy
时间:
2014-1-7 22:36
建议:多看视频多动脑,做好笔记,有些问题自己是可以解决的
作者:
小小菜鸟
时间:
2014-1-7 23:13
属性是用于存储数据的,直接被访问,容易出现安全隐患,所以,类中的属性通常被私有化,也就是 static int age;变量被私有化了,并对外提供公共的访问方法。这个 public int getAge()就是提供公共的访问方法。。。。
作者:
张小贝
时间:
2014-1-7 23:17
public int getAge()的作用是提供公共的访问方法、、、开发中最好写成这种形式。。。毕老师的视频看仔细一点就可以了。。。
作者:
王新年
时间:
2014-1-7 23:58
为了安全起见类中的一些属性一般是私有的,外界是无法访问的。当外界要访问这些属性的值,比如获取某个类的属性值或设置某个属性值时都是通过getXX()或setXXX(),这些方法不仅是子类获取父类中的方法,绝大多数是外界修改某个类的属性值或获取某个属性值用,比如在与数据库层相连接的javabean类!!
虽然有时也可以通过构造方法在创建对象时来设置属性值,但那样太局限当修改某个值时也就创建了某个对象此时这两个也不是同一个对象,所以对于那些常用于设置或获取属性值的类不能删除
作者:
贺利英
时间:
2014-1-8 00:09
写程序的时候,我们会使某些成员变量有要求,所以为了防止调用者传入非法的值,我们就会把这些成员变量定义成私有的成员变量,但是私有的成员变量只在本类有效,本类之外的不能访问它,所以就提供了public void setAge()和public int getAge()这两种方法来提供公共的访问方式来给私有成员变量赋值以及取值。对于能不能用其他的方法来代替,那就要看这个程序的用途了,如果说这些私有成员变量只是对象一建立就有值,并且以后不会改,那么,用构造函数也是可以的,eg
Person(int age)
{
this.age=age;
System.out.println("age="+age);
}
或者在别的相应的语句中输出;如果说,此对象的age值以后还会改变,那么就用
public int getAge()。我是这样的理解的,答案仅供参考的,如有错误,请及时的回复我,大家互相学习。
作者:
零敢
时间:
2014-1-8 00:25
class Person
{
private int age;
public void setAge(int a)
{
if(a>0&&a<130)
age=a;
speak( );
else
System.out.println("over");
}
public int getAge( )
{
return age;
}
void speak( )
{
System.out.println("age="+age);
}
class PersonDemo
{
public static void main (String[ ] args)
{
person P=new Person( );
P.setAge(40);
}
}
复制代码
你这里的age是私有封装了的,所以必须用getter方法来提供给外部调用.你说的方法就是返回
作者:
净坛使者
时间:
2014-1-8 00:45
你把成员变量private私有化了Person(int age)
{
this.age=age;
System.out.println("age="+age);
}
作者:
草根人才
时间:
2014-1-8 00:55
set是存储的方法,get是获取的方法,这两个是用来获取私有属性的两种方法,不能修改,在这个题中你把Person类中的age私有化了,如果要对age进行操作的话就必须有set和get方法。
作者:
不冬眠的蚂蚁
时间:
2014-1-8 09:49
set方法建立属性值 get方法获取属性值 这些写简单 也好理解 没必要写成别的
作者:
daoyua
时间:
2014-1-9 10:18
一个类你的一些属性,需要私有化,不让对象修改,他们只要获取就行了,所以定义get方法
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2