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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© kkqisheng 中级黑马   /  2015-4-6 17:14  /  1835 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

为什么一定要分成两个方法来达到封装目的,这两个方法能不能合在一起呢?比如下面的代码,只有一个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. }
复制代码

6 个回复

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

哈哈,犀利的解释。
回复 使用道具 举报
Searching 来自手机 中级黑马 2015-4-6 21:06:31
报纸
你想想,你set了一次张三,那后面有很多次要去取出张三这个名字,那你是不是每次都得传张三进去?等于你想要知道一个人叫什么名字,然后你问“张三,你叫什么名字”
回复 使用道具 举报
应该还是要的!
回复 使用道具 举报
setter和getter方法的主要目的是为了向外提供一个可以访问私有对象的接口,但是Sette的目的是为了给成员赋值,而getter方法是为了获取成员变量的值,你只有这个setter方法的话,只能在第一次的时候调用name属性,也就是你每次要调用name只能创建一个新的对象,同时完成赋值与取值。这样的话不利于代码的实用性。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马