一篇文章帶你深入了解Java封裝
如何實(shí)現(xiàn)封裝
可以分為兩步:
第一步:將類的變量聲明為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());
}
}
上面就是一個(gè)寫好的封裝啦 但是有很多用戶,很多屬性,寫起來就很麻煩,下面提供一種一行代碼搞定的方法
構(gòu)造方法
public User{
// 方法名與類名同名 沒有返回值結(jié)構(gòu) 其他與普通方法無異
}
注意點(diǎn):
對(duì)于每個(gè)類而言,都默認(rèn)具有一個(gè)隱式的空參數(shù)構(gòu)造方法 如果顯式寫了任意一個(gè)構(gòu)造方法,空參數(shù)構(gòu)造方法都會(huì)被覆蓋
代碼展示
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());
}
}
總結(jié)
封裝的優(yōu)點(diǎn)
- 良好的封裝能夠減少耦合。
- 類內(nèi)部的結(jié)構(gòu)可以自由修改。
- 可以對(duì)成員變量進(jìn)行更精確的控制。
- 隱藏信息,實(shí)現(xiàn)細(xì)節(jié)。
本篇文章就到這里了,希望能給你帶來幫助,也希望您關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
MyBatis啟動(dòng)時(shí)控制臺(tái)無限輸出日志的原因及解決辦法
這篇文章主要介紹了MyBatis啟動(dòng)時(shí)控制臺(tái)無限輸出日志的原因及解決辦法的相關(guān)資料,需要的朋友可以參考下2016-07-07
CountDownLatch源碼解析之a(chǎn)wait()
這篇文章主要為大家詳細(xì)解析了CountDownLatch源碼之a(chǎn)wait方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-04-04
Springboot+Shiro+Mybatis+mysql實(shí)現(xiàn)權(quán)限安全認(rèn)證的示例代碼
Shiro是Apache?的一個(gè)強(qiáng)大且易用的Java安全框架,執(zhí)行身份驗(yàn)證、授權(quán)、密碼學(xué)和會(huì)話管理,Shiro?主要分為兩個(gè)部分就是認(rèn)證和授權(quán)兩部分,這篇文章主要介紹了Springboot+Shiro+Mybatis+mysql實(shí)現(xiàn)權(quán)限安全認(rèn)證的示例代碼,需要的朋友可以參考下2024-07-07
解決IDEA上循環(huán)依賴報(bào)錯(cuò)問題Error:java: Annotation processing&n
這篇文章主要介紹了解決IDEA上循環(huán)依賴報(bào)錯(cuò)問題Error:java: Annotation processing is not supported for module cycles,具有很好的參考價(jià)值,希望對(duì)大家有所幫助2023-10-10
Spring?boot?運(yùn)用策略模式實(shí)現(xiàn)避免多次使用if的操作代碼
這篇文章主要介紹了Spring?boot?運(yùn)用策略模式實(shí)現(xiàn),避免多次使用if,使用策略模式后,新加一種支付策略時(shí),只需要在策略枚舉中添加新加的策略信息,外加一個(gè)策略類即可,而不再需要添加新的if判斷,需要的朋友可以參考下2022-08-08
解決MyBatis報(bào)錯(cuò):There is no getter for
這篇文章主要介紹了解決MyBatis報(bào)錯(cuò):There is no getter for property named'Xxx'in'class xxx.xxx.Xxx'問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08

