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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘焘 初级黑马   /  2012-6-25 13:08  /  3517 人查看  /  15 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 刘焘 于 2012-6-25 17:35 编辑

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


这里get有什么用,写的时候set和get都要写吗?

15 个回复

倒序浏览
应该改成:
public int setAge(int age)
     {
                this.age = age;
     }
public void getAge()
    {
                 return age;
    }
不是必须要写set和get,只是这样写意思更容易看懂,set是设置的意思,get是获取的意思,只是为了可读性更强一些。


回复 使用道具 举报
一般,自定义类中保存属性,为了安全,全部是私有的,只能通过get和set来获取,设置其值。而且get和set必须分开写,因为有些值只能让用户读取,不能让用户修改。
回复 使用道具 举报
public int setAge(int age)     -----》 public void setAge(int age)       ----->调用这个方法时,传入一个值,对age设置
     {
                this.age = age;
               // return age;          这是对age 进行设置,所以不用返回。 函数返回类型 应为 void
    }
public void getAge()      -------》public  int getAge()            ----->从方法名就能判断:“get” ,说明是获得,那么当然有返回值,所以返回int
    {
                this.age = age;

          return   age;         ------->添加上返回
    }     


一个类中的 get 和set 方法就是对为提供  对本类中的某个属性(本例中就是 age),的赋值和获取值的操作
回复 使用道具 举报
setter和getter方法一般作用是对private修饰的变量进行初始话和取值的一个操作!如果你的变量是private修饰的话那么外部是无法访问到的所以就需要setter和构造方法进行初始化,getter方法进行取值,一般情况如果定义private 变量的话都会用到相应的setter和getter方法  ,setter和getter方法并不要求成对出现,这样看你想要用它完成什么样的工作了,如果你只想初始化并不想取出他的值的话,那么只需要setter方法就可以了
回复 使用道具 举报
首先你写的就有问题get和set顾名思义,一个是设置,一个取值,是用来对类的私有成员变量进行读取操作的,你在setAge方法定义了返回值,有点不符合逻辑,虽然能运行,但是别人在用你的程序的时候就蒙了,set到底是取值还是设置啊,get方法是取值,getAge的方法应该加返回值,不加返回值你怎么取到啊,标准写法是这样,典型的javabean写法。等你用到eclipse时,你不用手写这些代码,eclipse有自动生成工具,你现在还没到那个阶段,明白了其中的道理,自然而然知道怎么写了。

public int getAge()
     {
                return age;
    }
public  void setAge(int age)
    {
                this.age = age;
    }
回复 使用道具 举报
邵阳 中级黑马 2012-6-25 13:30:23
7#
这个setAge和getAge,不是关键字;就表示两个变量名称,目的是为了使可读性比较强,明白代表什么意思;你也可以将他们改成其他的名称,a、b、c都行可以改成你想要的任何名称,但必须遵守名称命名规则。

回复 使用道具 举报
王冰 中级黑马 2012-6-25 13:32:37
8#
这两个方法是对数据进行设置和获取用的,在java类中使用这两个方法时,它们所设置和获取的变量在java 类中一般都设置成私有的,即用private来修饰,这样其他类中就不能访问这些变量了,提高了安全性,而其它类想要操作这些变量就只能通过public的构造函数或者get和set方法,写的时候可以只写其中的一个或者两者都写,带有get的为只读属性,不能对其进行赋值,带有set的为只写属性,可以设置值而不能获取,两者都有的为读写属性,即可进行赋值,也可以获取设置的值。
回复 使用道具 举报
set 和 get只是为了方便查找
如果你有自己更加容易记的名称,
也可以用你喜欢的名称

它们只是个标识符
也不是都要写

看你需不需要那个功能
回复 使用道具 举报
java程序规范中会建议大家尽量将类中的属性私有化,即定义为private变量,通过设置set和get函数来对属性进行操作。一些人存在这样的疑问,为什么不直接将属性设置为public,以后调用属性时直接通过对象进行访问不是更方便?

当然java中这样做有它的原因:

1  将数据与行为分离,也就是java的面向对象的概念。
   对象就是属性+行为,封装就是把对象的私有属性封装起来,只有通过自己公开的行为去改变(获得)对象内部的私有属性信息,而那些public的方法正是面向其他对象的接口,只有通过接口去改变(获得)对象的私有属性

2  安全性
   设想,你有一个Person类代表一个人,Person有一个char类型的sex字段表示性别,理论上,sex只接受两个值, 'M '和 'F ',但如果你把sex字段设为public,你很难限制你的用户只给它赋 'M '或 'F '值。将sex设为private,再用setSex()来设置性别,你就完全可以控制这种行为了。而且你还可以控制只能get不能set,或相反,但如果是public就不行了。别外有一点属性我们可能并不希望其他用户对我们的属性进行写操作,这个时候,可以直接不写setX方法。这就是只读属性了。

3  编码规范性
   我们在设计类,或者作com组件时经常告诉其实coder,你只需要调用我的XX接口方法就可以了,内部我是怎么实现的,你不用管,如果面向特定的环境特定的时间段,直接将属性声明为public,让外部对象访问也未偿不可,没有面象对象思想时,我在写C语言程序时结构中的变量是可以随意被访问的,因为没有pulbic,private之分,现在我们是面向对象编程,我们需要在接口处作文章,而保护对象的私有属
性,即安全性,只有通过对外公开的接口方法去访问在面向对象理论上认为是安全的。
回复 使用道具 举报
get,set常用在javaBean中使用
1)类中所有的属性最好定义为私有的
2)类中定义函数setXxx()和getXxx()来对属性进行操作。其中Xxx是首字母大写的私有变量名称。
例如:

注意格式:什么时候需要传参数,什么时候需要有返回值,我以前就写错过。呵呵。
class Person
{
    private int x;
   //因为只需要设置,没有返回值,需要传入参数
    void setAge(int age)

        return x;
   }
    //因为只需要得到,就要有返回值,不需要传入参数
    int getAge()
    {
       this.x = age;
    }

个人认为可以不用都要写
如果只需要设置一个值,就只用set,不用get,用什么写什么
回复 使用道具 举报
get 和set是函数的名称,是自己定义的
这里的问题是有无返回值的问题,即是否包含“return age”这样的语句,
就要在函数名称前加上数据类型,即“public int setAge(int age)”;
若无返回值,就写“public void setAge()”。
回复 使用道具 举报
游洪波 发表于 2012-6-25 13:27
setter和getter方法一般作用是对private修饰的变量进行初始话和取值的一个操作!如果你的变量是private修饰 ...

刚才没仔细看你的代码,现在看了下发现你有两处是错误的,
public int set Age(int age)//setAge方法顾名思义就是设置age的值用的,你却在这里加了一个int返回值,这样是不可以的。public  void setAge(int age){//setAge方法是没有返回值的,应此应该把你上边的int改成void 应为他是用来设置一个属性的值的所以不需要返回值   this .age =age;
}
还有你的getAge方法,get的意思就是取的意思,这个方法的作用意在于取出Age的值,应为age是int型变量,所以应该把 age返回去,那么这个方法的返回值就应该为int
public int getAge(){
//this .age =age;我想问你这个age是从哪里来的,暂且不说get方法里边不需要这些。还有你既然要取出age那就应该有return 语句把age返回去return this.age;
}
回复 使用道具 举报
dev 中级黑马 2012-6-25 15:08:25
14#
1、首先:
getXxx():表示获取某个变量值
setXxx():表示设置某个变量值

2、其次
get和set 方法用于private数据中,如果一个类中的数据已经设为private,
那么在其他类中已经不能调用他,只能通过get和set方法。
同时getter和setter方法也是JavaBean的一种规范。

3、最后:
你这里的代码虽然能正常运行,但是不符合正常的设计思想,
正确的get和set方法应该设计成:

public void setAge(int age)  //这里只是单纯的设置值,不用返回值
    {
        this.age = age;
    }
public int getAge()  //这里是获取值,所以需要一个返回值类型
    {
        return age;
    }

刚开始你可能不太明白为什么要这样设计,我当初学的时候也是这样,
不过随着你慢慢的深入学习,就会逐渐明白这种思想的好处了。我也
在努力学习中。




回复 使用道具 举报
翁游龙 发表于 2012-6-25 15:08
1、首先:
getXxx():表示获取某个变量值
setXxx():表示设置某个变量值

嗯 谢谢拉
回复 使用道具 举报
其实以后做项目当中的java类大多以javaBean的形式出现,这样既保持了类属性的隐蔽性,只提供对外的接口也就是方法,这样,就能很方便进行设值和取值,你写的方法当中
public int setAge(int age)
      {
                 this.age = age;
                 return age;
     }
public void getAge()
     {
                 this.age = age;
     }


你这样写的代码是不规范的,再说逻辑上你 想获得一个值,应给是这个值原来就有的,可是你却先设值再取值不有点多此一举吗
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马