Setter

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中的封装

一、getter

1、按照客户的期望返回格式化数据。

2、控制服务的顺序(例如只有当连接建立时getter方法才返回相应实例)。

二、setter

1、可以限制和检验setter方法传入的参数。

2、隐藏对象内部数据结构。

3、保持对象在每个状态的完整性。

setter方法用来去设置该变量的值,然后在用getter方法去调用该变量的值。

setter用来改变数据成员的值时,操作必须由这个对象自己来触发public用来改变数据成员的值时,操作可以由任何对象来触发这是面向对象的封装,总之就是自己的数据成员,只对自己可见,也只有自己才能改变其值。

扩展资料

java使用getter和setter的好处:

1、实现了专业的分工。将能实现某一特定功能的代码封装成一个独立的实体后,各程序员可以在需要的时候调用,从而实现了专业的分工。

2、隐藏信息,实现细节。通过控制访问权限可以将可以将不想让客户端程序员看到的信息隐藏起来,如某客户的银行的密码需要保密,只能对该客户开发权限。

3、用户无需知道对象内部方法的实现细节,但可以根据对象提供的外部接口(对象名和参数)访问该对象。

其实说得明白点吧,这只是java类(特别的很多时候是一个javabean)的两个方法,以提供对某个变量(字段)设置与访问的两个入口,在很多时候也正如你说,跟定义成public是没有两样的,具体的原因在于:
(1)由于很多框架都是调用这两个方法来实现沟通,这是一种习惯了。
(2)get/set方法也不一定只是简单的作一个赋值,或一个返回值吧,在这里可以作一些权限的控制,比如不是每个角色都可以赋值的。再比如返回的值不一定是值本身,可以是经过处理了的,比如加密,这用public定义是不能作到的。

批斗一下一些说法:public不好?那干脆去掉好了咯。实现隐藏?你用get/set不是一样可以取到它,设置它,这如何叫隐藏?用代码讲解一下:
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变量有了值“小明”后就可以用这个方法把它调出来。定义为private 是为了实现数据的隐藏和封装;

而set get 方法提供了类与外部的接口;

在大型软件中这是很有必要的,它有利于代码的维护

举个例子,

一个父类有多个子类(甚至还有间接子类),程序代码中,子类是不能直接访问父类的private属性的;这时提供的set get方法是很有必要的

诚然,若将父类的属性声明为protected,在子类中就可以直接访问了,但是这种方法破坏了数据的隐藏和封装原则,关键是不利于代码的维护,如果父类中的一个属性改名了,那么在子类中用到该属性名的代码,要发生大范围的修改,而前面的private,set,get方法就比较好,对代码只需小范围的修改,一般都是这么用的,这是一个良好的编程习惯

这是我的一点理解,希望有所帮助
喜欢阅读
  •  炼狱战王

    炼狱战王

    七年前,他被小姨子勾搭上床,成为了强奸犯,被送往监狱。七年后,他名满天下载誉而归。等待着他的,是残了腿的女儿,和受尽屈辱和折磨的老婆.......他一代战神,怒泄千里,一夜间调集十万精兵强将!

  • 才子风云录

    才子风云录

    入赘本朝大将军之府,软饭从天而降,但这饭却难以下咽。所以我不可能会混吃等死,甚至还要扶摇直上。

  • 可怜今生爱过你

    可怜今生爱过你

    她是豪门世家之女,爱上了英俊的他。可是当她怀孕的时候,他却是跟别人鬼混!她被人陷害,却无人帮助!她告诫自己,靠人不如靠己!

  • 暧昧荆棘

    暧昧荆棘

    长得丑不要紧,只要能领证结婚就行,苏小念从大马路上捡了一个便宜老公回家。没想到这个老公严重的表里不一,不仅长得不丑,居然还是个大帅哥!更过分的是,一言不合就发飙,害的她一天到晚扶着腰——叶泽晨是个有名无实的豪门少爷,但是遇到苏小念之后,忽然像是充了电的小马达,不仅关了灯神勇无比,就连窝囊废的帽子都甩得远远的——

  • 闪婚爱妻

    闪婚爱妻

    不甘被弃,她嫁给了渣男的残疾大哥!谁知残疾不残,还是腹黑首长!说好的不能人道呢!

  • 刻骨情深:总裁要复婚

    刻骨情深:总裁要复婚

    为你付出一切,你却当儿戏,当我转身时,你却求着要复婚,男人啊…

  • 转世帝尊

    转世帝尊

    纵世奇才楚风以一人之力战四大宗门,以一敌万,大杀四方,但终究寡不敌众。一朝醒来,发现得上清圣尊传承。这一世,强势归来!灭了三大宗门,更进一步,报仇雪恨,追求自在逍遥!斩了天道,化作主宰,成就永恒!万水千山,以我为尊!八荒六合,唯我称雄!!!

  • 八荒战王

    八荒战王

    六年戎马生涯,纵横北境,抵御外敌!攻无不克战无不胜!他携一身荣耀回归,只为让他妻女,万众瞩目!

  • 猜你喜欢
    热门推荐
  • 雨魄云魂 闲相饮番外
  • 小室哲哉 扒一扒
  • ppt怎么加文本框
  • 缘起缘灭缘聚缘散全句
  • japanese app
  • 彩画堂新世纪妖气漫画
  • apu的核显性能相当于
  • www.875535.com
  • 陆萧潜 韩墨雪的小说是
  • 三国游侠传 阿飞 小说
  • VF China 上海威富集团
  • 基里艾洛德之神
  • 海外产业体系ppt
  • 巳月仙人模式是哪话
  • word标题格式全文替换
  • 吉成gs 4042h
  • 地道的祝早日康复 英文
  • irina kazakova与v太
  • 浪花一朵朵唐一白被打
  • 七彩虹9800gt黄金版
  • All Right Reserved 完美网