黑马程序员技术交流社区

标题: 关于setter和getter方法 [打印本页]

作者: kkqisheng    时间: 2015-4-6 17:14
标题: 关于setter和getter方法
为什么一定要分成两个方法来达到封装目的,这两个方法能不能合在一起呢?比如下面的代码,只有一个setter方法,感受也能用啊,相当于把getter方法包含进setter方法里,这样做是不是不好?
  1. public class Student {
  2.         private String name;
  3.         String setName(String name)
  4.         {
  5.                 if(name.length()<2||name.length()>4)
  6.                 {
  7.                         return "你的名字不全规范!";
  8.                 }
  9.                 else
  10.                 {
  11.                         this.name=name;
  12.                         return this.name;
  13.                 }
  14.         }
  15.                
  16.         public static void main(String[] args)
  17.         {
  18.                 Student kk=new Student();
  19.                 System.out.println(kk.setName("张"));
  20.                 System.out.println(kk.setName("张三"));
  21.                
  22.         }
  23. }
复制代码

作者: 黑色救护车    时间: 2015-4-6 18:33
我觉得没问题~看看其他人怎么看~Java设置了get,总有原因~
作者: JarryHorse    时间: 2015-4-6 19:47
哥们多看基本编程思想方面的书就明白了,封装要符合设计模式的单一职责原则,总不能我叫你爹过来吃饭,你爹把你全家都叫过来吧?开家长会么这是?比如我想知道你叫什么名字,我直接问你名字不就行了么,你又干嘛要告诉我名字后顺便判断一下自己要不要改名字呢?还有,你看您这代码是不是很臃肿很没可读性啊?真正做开发错一处你是不是要都改啊?做开发可不只是个hello world啊,要改简直就是场灾难啊,兄弟,不要为图省事儿影响世界和平啊
作者: zouxx    时间: 2015-4-6 20:18
JarryHorse 发表于 2015-4-6 19:47
哥们多看基本编程思想方面的书就明白了,封装要符合设计模式的单一职责原则,总不能我叫你爹过来吃饭,你爹 ...

哈哈,犀利的解释。
作者: Searching    时间: 2015-4-6 21:06
你想想,你set了一次张三,那后面有很多次要去取出张三这个名字,那你是不是每次都得传张三进去?等于你想要知道一个人叫什么名字,然后你问“张三,你叫什么名字”
作者: Fruious    时间: 2015-4-6 21:11
应该还是要的!
作者: leonard    时间: 2015-4-6 21:44
setter和getter方法的主要目的是为了向外提供一个可以访问私有对象的接口,但是Sette的目的是为了给成员赋值,而getter方法是为了获取成员变量的值,你只有这个setter方法的话,只能在第一次的时候调用name属性,也就是你每次要调用name只能创建一个新的对象,同时完成赋值与取值。这样的话不利于代码的实用性。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2