一篇文章带你深入了解Java封装
更新时间:2021年08月01日 09:36:04 作者:Wxbbbbb
Java中的封装是将数据(变量)和作用于数据(方法)的代码作为一个单元包装在一起的机制。 在封装中,类的变量将从其他类隐藏,并且只能通过当前类的方法访问
如何实现封装
可以分为两步:
第一步:将类的变量声明为private。
第二步:提供公共set和get方法来修改和获取变量的值。
代码展示
public class User { private String name; private int age; private int id; private String address; public int getAge(){ return age; } public String getName(){ return name; } public int getId(){ return id; } public String getAddress(){ return address; } public void setName(String Newname){ name = Newname; } public void setAge(int Newage){ age = Newage; } public void setAddress(String Newaddress){ address= Newaddress; } } class Mainclass{ public static void main(String[] args) { User user = new User(); user.setAge(18); user.setName("Kevin"); user.setAddress("江苏"); System.out.println("Name:"+user.getName()+",Age:"+user.getAge()); } }
上面就是一个写好的封装啦 但是有很多用户,很多属性,写起来就很麻烦,下面提供一种一行代码搞定的方法
构造方法
public User{ // 方法名与类名同名 没有返回值结构 其他与普通方法无异 }
注意点:
对于每个类而言,都默认具有一个隐式的空参数构造方法 如果显式写了任意一个构造方法,空参数构造方法都会被覆盖
代码展示
public class User { private String name; private int age; private int id; private String address; public User(String name, int age, int id, String address) { this.name = name; this.age = age; this.id = id; this.address = address; } public int getAge(){ return age; } public String getName(){ return name; } public int getId(){ return id; } public String getAddress(){ return address; } public void setName(String Newname){ name = Newname; } public void setAge(int Newage){ age = Newage; } public void setAddress(String Newaddress){ address= Newaddress; } public void setId(int Newid){ id = Newid;} } class Mainclass{ public static void main(String[] args) { User user = new User("kevin",18,001,"江苏");//一行代码就能赋值啦 System.out.println("Name:"+user.getName()+",Age:"+user.getAge()); } }
总结
封装的优点
- 良好的封装能够减少耦合。
- 类内部的结构可以自由修改。
- 可以对成员变量进行更精确的控制。
- 隐藏信息,实现细节。
本篇文章就到这里了,希望能给你带来帮助,也希望您关注脚本之家的更多内容!
相关文章
Springboot+Shiro+Mybatis+mysql实现权限安全认证的示例代码
Shiro是Apache 的一个强大且易用的Java安全框架,执行身份验证、授权、密码学和会话管理,Shiro 主要分为两个部分就是认证和授权两部分,这篇文章主要介绍了Springboot+Shiro+Mybatis+mysql实现权限安全认证的示例代码,需要的朋友可以参考下2024-07-07解决IDEA上循环依赖报错问题Error:java: Annotation processing&n
这篇文章主要介绍了解决IDEA上循环依赖报错问题Error:java: Annotation processing is not supported for module cycles,具有很好的参考价值,希望对大家有所帮助2023-10-10Spring boot 运用策略模式实现避免多次使用if的操作代码
这篇文章主要介绍了Spring boot 运用策略模式实现,避免多次使用if,使用策略模式后,新加一种支付策略时,只需要在策略枚举中添加新加的策略信息,外加一个策略类即可,而不再需要添加新的if判断,需要的朋友可以参考下2022-08-08解决MyBatis报错:There is no getter for
这篇文章主要介绍了解决MyBatis报错:There is no getter for property named'Xxx'in'class xxx.xxx.Xxx'问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2024-08-08
最新评论