- LuckySXyd
-
一、getter
1、按照客户的期望返回格式化数据。
2、控制服务的顺序(例如只有当连接建立时getter方法才返回相应实例)。
二、setter
1、可以限制和检验setter方法传入的参数。
2、隐藏对象内部数据结构。
3、保持对象在每个状态的完整性。
setter方法用来去设置该变量的值,然后在用getter方法去调用该变量的值。
setter用来改变数据成员的值时,操作必须由这个对象自己来触发public用来改变数据成员的值时,操作可以由任何对象来触发这是面向对象的封装,总之就是自己的数据成员,只对自己可见,也只有自己才能改变其值。
扩展资料
java使用getter和setter的好处:
1、实现了专业的分工。将能实现某一特定功能的代码封装成一个独立的实体后,各程序员可以在需要的时候调用,从而实现了专业的分工。
2、隐藏信息,实现细节。通过控制访问权限可以将可以将不想让客户端程序员看到的信息隐藏起来,如某客户的银行的密码需要保密,只能对该客户开发权限。
3、用户无需知道对象内部方法的实现细节,但可以根据对象提供的外部接口(对象名和参数)访问该对象。
- 奇石珠宝真君
-
get和set就是java中的封装技术。首先我们需要知道,一旦一个变量被“private”私有化了,那么在其他类文件就不能引用(使用)它。使用“private”是把被使用的变量保护起来,使别人不知道这个变量的名称是什么,有保护的作用。
而set和get就是在和“private”私有化的变量在同一个类文件中,set和get是“public”共有的,也就是说这两个方法是可以被在其他类文件中使用的。set方法的意思是定义一个方法含一个参数,把所含有的这个参数(后期自己设置)赋给你需要私有化的变量(在当前类中设置),相当于充当媒介,外界想要改变已经“private”私有化的变量,必须要在其他类文件中给方法set一个参数,通过set变量来更改。
set的名字可以随便取,如此一来其他类中根本不知道在另一个类中“private”私有化的变量名称,也不能直接更改。get则是获取这个私有化的变量值。是定义了一个带返回类型的方法,这个返回类型就是已经被你私有化变量的类型。以题目为例,你私有化了String类型的name,那么get方法的返回类型就是String类型,同时返回当前类中name的值。
这样一来在其他类文件中,可以通过set方法来给和更改另一个类中的加密变量值,可以通过get来获取另一个类中加密的变量值,而这个被加密的变量则变量名始终没有人知道。
扩展资料:
“java中的封装”是把过程和数据包围起来,对数据的访问只能通过已定义的接口。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。封装是一种信息隐藏技术,在java中通过关键字private,protected和public实现封装。
封装实际上使用方法将类的数据隐藏起来,控制用户对类的修改和访问数据的程度。 适当的封装可以让程式码更容易理解和维护,也加强了程式码的安全性。
参考资料:百度百科-java中的封装
- 臭打游戏的长毛
-
其实说得明白点吧,这只是java类(特别的很多时候是一个javabean)的两个方法,以提供对某个变量(字段)设置与访问的两个入口,在很多时候也正如你说,跟定义成public是没有两样的,具体的原因在于:
(1)由于很多框架都是调用这两个方法来实现沟通,这是一种习惯了。
(2)get/set方法也不一定只是简单的作一个赋值,或一个返回值吧,在这里可以作一些权限的控制,比如不是每个角色都可以赋值的。再比如返回的值不一定是值本身,可以是经过处理了的,比如加密,这用public定义是不能作到的。
批斗一下一些说法:public不好?那干脆去掉好了咯。实现隐藏?你用get/set不是一样可以取到它,设置它,这如何叫隐藏?
- 阳光下的日耳曼尼亚
-
定义为private 是为了实现数据的隐藏和封装;
而set get 方法提供了类与外部的接口;
在大型软件中这是很有必要的,它有利于代码的维护
举个例子,
一个父类有多个子类(甚至还有间接子类),程序代码中,子类是不能直接访问父类的private属性的;这时提供的set get方法是很有必要的
诚然,若将父类的属性声明为protected,在子类中就可以直接访问了,但是这种方法破坏了数据的隐藏和封装原则,关键是不利于代码的维护,如果父类中的一个属性改名了,那么在子类中用到该属性名的代码,要发生大范围的修改,而前面的private,set,get方法就比较好,对代码只需小范围的修改,一般都是这么用的,这是一个良好的编程习惯
这是我的一点理解,希望有所帮助
- 苏萦
-
哎,这样写叫实体类,叫javabean
JavaBean严格来说能重用的类才叫javabean,但通常指的是与数据库字段相对应的字段,然后写成get和set方法
目的很简单嘛!数据的转载于传输嘛!
如果把数据库里面的数据给 封装进集合,然后在从集合里面取值的话,变量就只能取一次啦,因为每次循环的时候值都被覆盖啦!方法就不一样啦,对象.方法,你想怎么用就怎么用,只要集合在,里面的数据就不会丢的!
自己去试下,把数据库里面的记录读取出来分别用变量与对象去封装 看看谁方便,谁好用,谁的优点多。
去问下老师,同学就可以啦,而且还很直观?提问浪费资源分啊。。。
- 北境漫步
-
首先,直接访问类的的成员是极端不好的设计
其次,不知道你反射了解的怎么样,getter,setter是一种规范,如果一个类里面有很多字段,我想动态的获取这些字段的值(比如说有字段str,abc,dgv,我要你设计一个方法,我传进字段的名称和它的值,你来把值设置进去)怎么办呢?有了setter这个规范,我可以构造一个setter方法(即set+字段名并且字段名第一个字母转为大写,很简单),通过反射获取该Method,然后设值,这个在一些框架中用的及其广泛!
- gitcloud
-
提供getter和setter的主要作用是隐藏内部实现,并对数据进行前期/后期处理.
比如我现在要设置某个人的名字,但我要求这个人的名字是纯英文字符,仅提供公共字段就无法解决,但提供setter我可以在属性设置前对值进行判断,当不符合要求时可以抛出异常或返回设置失败.
又比如有些地方当下级对象发生变化时需要向其上级监听器提供触发事件,这也是提供公共字段无法解决的,需要在setter中触发模型变化事件,并向上提交.
- 瑞瑞爱吃桃
-
private String name;
因为是用private修饰所以别的类无法访问该成员变量,
所以当需要改变name里的值时,须要set进行改变,get进行取值。
用public修饰,这样就不能保证数据的安全性。用private修饰成员变量或方法就是用来保证数据安全的。
- 以心消业
-
用代码讲解一下:
public class Student {
String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Student s1=new Student();
s1.setName("小明");
System.out.println("学生的姓名为:"+s1.getName());
}
}
上面的意思是创建一个学生类,声明一个name变量,并给了它getter和setter方法。
先说setter方法,刚开始创建name变量时没有赋值,后面用这个方法给他赋值“小明”
再说getter方法,name变量有了值“小明”后就可以用这个方法把它调出来。
- CPS小天才
-
java的三大特征:封装、继承、多态。
java类中的属性如果没有特别的需求,都必须声明为private的,就是只能在本类中访问,如果其他类想访问,就必须通过get,set方法。这就是java中的一大特征之一:封装。从而保证安全性。如果用public(任何类都可以直接访问)修饰的话,虽然操作简单,但对数据不安全。
- 真颛
-
你写的东西可以说是一个javabean
这样写它的好处就是保证了数据的安全性.
如果你用public String name这样虽然是可以!
但是不安全!
你想一下!
你这样只能是赋值,如果你取值呢.
不就是不行吗!
- 再也不做站长了
-
java中的set方法主要是为你定义的变量赋值,而get方法主要是得到对象中的属性的值。
- 左迁
-
隐藏不必要暴露给外界的属性,,,,外部类使用必须用公有方法取值/赋值,,,
- Troublesleeper
-
其实getter 和setter 并没有实际的用处! 完全是在忽悠小白鼠, 也许有人马上来反驳我了;
说好处是:1.封装有利于程序的安全性(基本上所有人都会这么回答),2.控制访问
大家仔细想想, 很多语言都不会去设置这些臃肿的东西, 比如python;
做了开发7年,做过的项目也有不少,接触过的同事也不少.从来么有一个把安全设置放在setter方法里面,而且三层架构也不允许把业务逻辑setter里面; 控制访问需要什么返什么,不可能放到getter里面;
控制层控制传入传出的bean逻辑校验, 业务层处理业务; 如果你敢把setter里面限制,一旦业务那么,它就会在他引用的地方到处植入,很可怕; 现实中,不同的环境中对于同一个javabean限制也不是一成不变的, 这样写在setter里面简直是侮辱智商
于是,这种东西到底有什么用???
很多公司的技术规范要求不能修改javabean的原生get和set
甚至有些人为了省这些东西,专门搞了个@lombok;
可想而知,get和set 这东西是有多么反人类了; 为什么还有人一直在用呢, 无外乎"老祖宗"留下来的传统; 认为它可能会用上,就一直沿袭了下来.
综合来说,这种东西非常鸡肋,而且冗余! 请不要再侮辱大家智商了