CSDN-CSDN社区-Java-Java SE

收藏 为什么我们不能将java中的Set()和get()方法写到一起?请具体说明,谢谢。[问题点数:20,结帖人:czqtxd]

  • czqtxd
  • (czqtxd)
  • 等 级:
  • 结帖率:
楼主发表于:2008-10-31 11:49:33
如题,为什么一个方法可以实现的事,非要用两个发法实现呢?
我知道set()方法时可写的;get()方法是可读的;两个方法可以实现可读可写;
虽然每次都要return一个值,但是我们调用了set()方法不就是为了得到set()方法中传入的新值吗?
为什么非要分开写,写在一起不一样可是实现封装吗?
回复次数:43
#1楼 得分:0回复于:2008-10-31 11:56:14
引用楼主 czqtxd 的帖子:
如题,为什么一个方法可以实现的事,非要用两个发法实现呢?
我知道set()方法时可写的;get()方法是可读的;两个方法可以实现可读可写;
虽然每次都要return一个值,但是我们调用了set()方法不就是为了得到set()方法中传入的新值吗?
为什么非要分开写,写在一起不一样可是实现封装吗?


我们调用了set()方法不就是为了得到set()方法中传入的新值

没有明白LZ这句话到底是什么意思。
set不一定是非要把得到新值,比如说hibernate中pojo的set就是把数据封装起来然后一起存入数据库
  • lxxzhy用户头像
  • lxxzhy
  • (任何时候,你都只能通过refe)
  • 等 级:
#2楼 得分:0回复于:2008-10-31 11:57:26
set带参
get不带参
你要怎么写到一个方法呢?
#3楼 得分:0回复于:2008-10-31 12:02:11
要是写在一起的话,也只是做了set,get就没意思意思了
  • czqtxd用户头像
  • czqtxd
  • (czqtxd)
  • 等 级:
#4楼 得分:0回复于:2008-10-31 12:02:17
引用 2 楼 lxxzhy 的回复:
set带参
get不带参
你要怎么写到一个方法呢?

比如 定义一个点
class Point{
    double x,y;
    double setX(double _x){
        this.x=_x;
        return x;}
    double setX(double _y){
        this.y=_y;
        return y;} 
#5楼 得分:0回复于:2008-10-31 12:03:25
这样做有利于扩展性和伸缩性,分得越细,其可重用性就越高
#6楼 得分:0回复于:2008-10-31 12:04:12
还是分开的好.
#7楼 得分:0回复于:2008-10-31 12:05:10
set和get引用的时间和地点不一样,不然也没必要了,如楼主说,写在一起,把刚设的值马上返回不是多此一举,还不如直接引用你要设的值
#8楼 得分:0回复于:2008-10-31 12:05:18
对于变量的可读可写,你要写在一起也可以,
但是如果此时我要求某一变量只允许读呢,这样写在一起就不利于代码的重构了
  • Ousui用户头像
  • Ousui
  • (0.13)
  • 等 级:
#9楼 得分:0回复于:2008-10-31 12:10:55
java程序一般将A类的属性修饰符设置为private,这是为了更好的封装数据。要想在B类里引用该属性,就可以在A类里定义修饰符为public的set,get方法以设置和获取private型的属性值
  • woshizn用户头像
  • woshizn
  • (知识改变思维 思维改变生活)
  • 等 级:
#10楼 得分:0回复于:2008-10-31 12:11:13

怎么写在一起?

  一个是往里面传值,类型是void

  一个是取值,带return语句。
#11楼 得分:0回复于:2008-10-31 12:15:03
引用 4 楼 czqtxd 的回复:
引用 2 楼 lxxzhy 的回复:

set带参
get不带参
你要怎么写到一个方法呢?

比如 定义一个点
class Point{
    double x,y;
    double setX(double _x){
        this.x=_x;
        return x;}
    double setX(double _y){
        this.y=_y;
        return y;} 


这样写,在同一时间点使用可以。
但读写主要用在不同时间不同地点。
  • lxxzhy用户头像
  • lxxzhy
  • (任何时候,你都只能通过refe)
  • 等 级:
#12楼 得分:0回复于:2008-10-31 12:31:22
引用 4 楼 czqtxd 的回复:
引用 2 楼 lxxzhy 的回复:
set带参
get不带参
你要怎么写到一个方法呢?

比如 定义一个点
class Point{
double x,y;
double setX(double _x){
this.x=_x;
return x;}
double setX(double _y){
this.y=_y;
return y;}

如果我只要get出值来,难道我还先传个值进去吗?
  • ZangXT用户头像
  • ZangXT
  • (深入JVM)
  • 等 级:
  • 2

#13楼 得分:0回复于:2008-10-31 12:33:55
引用 4 楼 czqtxd 的回复:
引用 2 楼 lxxzhy 的回复:
set带参
get不带参
你要怎么写到一个方法呢?

比如 定义一个点
class Point{
double x,y;
double setX(double _x){
this.x=_x;
return x;}
double setX(double _y){
this.y=_y;
return y;}

传参数,再返回参数有啥意思吗?
  • lxxzhy用户头像
  • lxxzhy
  • (任何时候,你都只能通过refe)
  • 等 级:
#14楼 得分:0回复于:2008-10-31 12:38:02
LZ先搞清楚自己到底想要做什么吧.
  • czqtxd用户头像
  • czqtxd
  • (czqtxd)
  • 等 级:
#15楼 得分:0回复于:2008-10-31 13:07:53
引用 12 楼 lxxzhy 的回复:
引用 4 楼 czqtxd 的回复:
引用 2 楼 lxxzhy 的回复:
set带参
get不带参
你要怎么写到一个方法呢?

比如 定义一个点
class Point{
double x,y;
double setX(double _x){
this.x=_x;
return x;}
double setX(double _y){
this.y=_y;
return y;}

如果我只要get出值来,难道我还先传个值进去吗?

比如求一个点P(3.0,2.0)到另一个点O(0.0,0.0)之间的距离,
可以写一个getDistance()的方法,这样就可以得出P到O的距离了,
如果想知道另外一点P1(1.0,2.0)到P点的距离,
我们可以通过O调用setX()与setY()方法直接的到 一个点P1,
这样就不用重新定义点p1了。
#16楼 得分:0回复于:2008-10-31 13:08:26
引用 4 楼 czqtxd 的回复:
引用 2 楼 lxxzhy 的回复:
set带参
get不带参
你要怎么写到一个方法呢?

比如 定义一个点
class Point{
    double x,y;
    double setX(double _x){
        this.x=_x;
        return x;}
    double setX(double _y){
        this.y=_y;
        return y;} 


那我想得到x该怎么得呢?
#17楼 得分:0回复于:2008-10-31 13:19:19
C#里支持这种做法,我感觉挺好的,比一堆set get显得干净些.
  • lxxzhy用户头像
  • lxxzhy
  • (任何时候,你都只能通过refe)
  • 等 级:
#18楼 得分:0回复于:2008-10-31 13:26:41
引用 17 楼 pauliuyou 的回复:
C#里支持这种做法,我感觉挺好的,比一堆set get显得干净些.

你看看C#是怎么实现的,就知道本质是一样的.
#19楼 得分:0回复于:2008-10-31 13:28:36
楼主先理清思路,再考虑其他的

C#中也有get和set
  • czqtxd用户头像
  • czqtxd
  • (czqtxd)
  • 等 级:
#20楼 得分:0回复于:2008-10-31 13:31:52
好了好了,
谁能具体说说set()和GET()方法
具体是做什么的方法?
要具体的。
  • ZangXT用户头像
  • ZangXT
  • (深入JVM)
  • 等 级:
  • 2

#21楼 得分:0回复于:2008-10-31 13:37:10
引用 20 楼 czqtxd 的回复:
好了好了,
谁能具体说说set()和GET()方法
具体是做什么的方法?
要具体的。

建议看点javabean相关的东西.
  • czqtxd用户头像
  • czqtxd
  • (czqtxd)
  • 等 级:
#22楼 得分:0回复于:2008-10-31 13:37:20
或者说说写在一起有什么坏处,之前有人说,可能set()和GET()的时间或者地点不一样,
但是写到一起不时也对吗,不管计算机什么时候需要GET(),我只要在上次调用方法结束后返回值就是了,
管计算机用不用到这个值呢?就好比你冷的不行了要穿衣服,还要问衣服是什么时候买的吗?
#23楼 得分:0回复于:2008-10-31 13:56:44
我只是想知道我想取x的值该怎么办?  int x = set(????);??
  • ZiSheng用户头像
  • ZiSheng
  • (不给分我就打你屁股)
  • 等 级:
#24楼 得分:0回复于:2008-10-31 13:56:45
set是设置的意思
get是得到的意思
容易记忆所以分开些
  • ZiSheng用户头像
  • ZiSheng
  • (不给分我就打你屁股)
  • 等 级:
#25楼 得分:0回复于:2008-10-31 13:58:33
引用 21 楼 ZangXT 的回复:
引用 20 楼 czqtxd 的回复:
好了好了,
谁能具体说说set()和GET()方法
具体是做什么的方法?
要具体的。

建议看点javabean相关的东西.

有道理
  • czqtxd用户头像
  • czqtxd
  • (czqtxd)
  • 等 级:
#26楼 得分:0回复于:2008-10-31 14:03:54
引用 23 楼 cosmos1984 的回复:
我只是想知道我想取x的值该怎么办?  int x = set(????);??

你没有对X进行赋值,要怎么取呢?
况且你取X做什么呢?
#27楼 得分:0回复于:2008-10-31 14:05:56
合在一起当然可以实现功能
不过从理解上还是觉得分开点好,
也更容易扩展业务逻辑~~
  • czqtxd用户头像
  • czqtxd
  • (czqtxd)
  • 等 级:
#28楼 得分:0回复于:2008-10-31 14:07:47
引用 23 楼 cosmos1984 的回复:
我只是想知道我想取x的值该怎么办?  int x = set(????);??
两个方法想写一起了,之前调用的时候已经return了,直接用就行了啊
#29楼 得分:0回复于:2008-10-31 14:10:20
引用 28 楼 czqtxd 的回复:
引用 23 楼 cosmos1984 的回复:
我只是想知道我想取x的值该怎么办?  int x = set(????);??
两个方法想写一起了,之前调用的时候已经return了,直接用就行了啊


我只是要取值啊,我不知道x是多少,我现在要得到这个x,我应该怎么做?
  • axman用户头像
  • axman
  • (江渚渔樵)
  • 等 级:
#30楼 得分:0回复于:2008-10-31 14:15:21
这样的贴子竟然也有人讨论得热火朝天的,都是人才啊.

为什么JAVA不叫AVAJ?请具体说明,人才们快讨论啊.
  • bao110908用户头像
  • bao110908
  • (火龙果@智齿,智齿,好痛啊!)
  • 等 级:
  • 2

    4

#31楼 得分:0回复于:2008-10-31 14:17:25
呵呵
  • czqtxd用户头像
  • czqtxd
  • (czqtxd)
  • 等 级:
#32楼 得分:0回复于:2008-10-31 14:20:49
引用 30 楼 axman 的回复:
这样的贴子竟然也有人讨论得热火朝天的,都是人才啊.

为什么JAVA不叫AVAJ?请具体说明,人才们快讨论啊.


一看就时高手,给我讲讲吧··
  • czqtxd用户头像
  • czqtxd
  • (czqtxd)
  • 等 级:
#33楼 得分:0回复于:2008-10-31 14:22:20
引用 29 楼 cosmos1984 的回复:
引用 28 楼 czqtxd 的回复:
引用 23 楼 cosmos1984 的回复:
我只是想知道我想取x的值该怎么办?  int x = set(????);??
两个方法想写一起了,之前调用的时候已经return了,直接用就行了啊


我只是要取值啊,我不知道x是多少,我现在要得到这个x,我应该怎么做?

直接调用写在一起的方法不就好了~
#34楼 得分:0回复于:2008-10-31 14:25:30
引用 33 楼 czqtxd 的回复:
引用 29 楼 cosmos1984 的回复:
引用 28 楼 czqtxd 的回复:
引用 23 楼 cosmos1984 的回复:
我只是想知道我想取x的值该怎么办?  int x = set(????);??
两个方法想写一起了,之前调用的时候已经return了,直接用就行了啊


我只是要取值啊,我不知道x是多少,我现在要得到这个x,我应该怎么做?

直接调用写在一起的方法不就好了~


......我无语了,理解不了,我闪人了
#35楼 得分:0回复于:2008-10-31 15:40:06
LZ你先说说你这个想法有什么意义,解决了什么问题吧?
#36楼 得分:0回复于:2008-10-31 15:50:41
引用楼主 czqtxd 的帖子:
如题,为什么一个方法可以实现的事,非要用两个发法实现呢?
我知道set()方法时可写的;get()方法是可读的;两个方法可以实现可读可写;
虽然每次都要return一个值,但是我们调用了set()方法不就是为了得到set()方法中传入的新值吗?
为什么非要分开写,写在一起不一样可是实现封装吗?

去看下什么是面向对象吧,编程不是把能合在一起都合在一起
  • yko2008用户头像
  • yko2008
  • (no ¥'s crow)
  • 等 级:
#37楼 得分:0回复于:2008-10-31 15:50:23
引用 33 楼 czqtxd 的回复:
引用 29 楼 cosmos1984 的回复:
引用 28 楼 czqtxd 的回复:
引用 23 楼 cosmos1984 的回复:
我只是想知道我想取x的值该怎么办?  int x = set(????);??
两个方法想写一起了,之前调用的时候已经return了,直接用就行了啊


我只是要取值啊,我不知道x是多少,我现在要得到这个x,我应该怎么做?

直接调用写在一起的方法不就好了~

我也无语无语.........................
#38楼 得分:0回复于:2008-10-31 15:56:28
set和get方法主要定义一个Bean的规范写法。
你不使用Bean的功能随便定义都可以
#39楼 得分:20回复于:2008-10-31 16:02:56
  • gch_h用户头像
  • gch_h
  • (小小乌龟)
  • 等 级:
#40楼 得分:0回复于:2008-10-31 17:46:47
当然可以写到一起,不过set和get方法是Javabean的约定,很多时候一些框架根据反射来调用这两个方法,所以这两种方法的命名和作用都应该遵循约定以便提高你的程序的通用性,可读性,如果你需要具有两者的功能最好不要使用set或get的命名方式。
#41楼 得分:0回复于:2008-10-31 18:35:12
假如你要set(x),methodA可以改变x,mothodB也可以改变x,不同的实例有不同的需要,最后x变成什么值是不确定的,把它和get写一块这种思想就错了。

比如
Java code
class person{ int age; //method... public void growup(int year){ age+=year; } }

每个人growup不一样,get出来age...
#42楼 得分:0回复于:2008-10-31 18:35:29
假如你要set(x),methodA可以改变x,mothodB也可以改变x,不同的实例有不同的需要,最后x变成什么值是不确定的,把它和get写一块这种思想就错了。

比如
Java code
class person{ int age; //method... public void growup(int year){ age+=year; } }

每个人growup不一样,get出来age...
#43楼 得分:0回复于:2008-10-31 22:15:13
个人觉得set()方法是将值进行了暂时存储,get()方法时将数据取出,他们运用有时不是一起用,比如jsp网页中你可以将数据暂时存入javabean但是你后面展现页面时可能多次运用数据,就要调用get()方法。而set方法的存储方便了取数据。
相关问题
一个简单的问题,送50分,谢谢了.NET技术/ VB.NET - CSDN社区community ...
用ADODB.Stream下载大文件无法下载的问题(急,给分100,在线等) Web ...
几个面试的很简单的问题,请大家解答Java / J2EE / EJB / JMS - CSDN ...
请假一个问题,如何get/set另一个程序在内存中使用的数据? VC/MFC ...
.NET技术与J2EE技术对,指出各自的优缺点? .NET技术/ 非技术区- CSDN ...
一个javabean调用另一javabean中的类,加了包名为什么无法编译Java ...