面向?qū)ο蟮木幊陶Z言,擁有你三大特性扣唱,分別是:封裝,繼承伍纫,多態(tài)。
封裝:封裝是指將對象的狀態(tài)信息隱藏在對象內(nèi)部昂芜,不允許外部程序直接訪問對象內(nèi)部信息莹规,而是通過該類所提供的方法來實現(xiàn)對內(nèi)部信息的操作訪問
封裝的好處:
1:提高了安全性
2:提高了復(fù)用性
3:隱藏了實現(xiàn)細節(jié)
在賣你想對象的過程中,我們通過”權(quán)限控制”對封裝好的類加上權(quán)限说铃,來限制外來者對類的操縱访惜,借以達到保障類中數(shù)據(jù)和方法的安全性的目的嘹履。而這種權(quán)限,可以用來控制屬性和方法的訪問范圍
訪問權(quán)限修飾符
修飾符 | 同一個類 | 同一個包 | 子類 | 所有類 |
---|---|---|---|---|
public 公有的 | √ | √ | √ | √ |
protected 受保護的 | √ | √ | √ | |
default 默認的 | √ | √ | ||
private 私有的 | √ |
封裝的步驟如下:
1:盡量讓權(quán)限講到最低债热,在類里要將屬性前添加private修飾符砾嫉,從而而提高安全性
2:在類中定義 getter和setter方法,在方法內(nèi)設(shè)置取值范圍
3:最后窒篱,在我們的main 函數(shù)里的對象焕刮,不能在直接調(diào)用屬性了,只能通過getter和setter方法進行調(diào)用
案例代碼:
/**
* @version 1.0
* @author: jiazhihao
* @date: 2021-05-06 11:47
*/
/*封裝
三大特性: 封裝 繼承 多態(tài)
set 給屬性賦值
get讀取屬性的值*/
public class Person {
//私有屬性
private String name;
private String pwd;
private Integer age;
private String sex;
// 無參構(gòu)造方法
public Person() {
}
;
//對應(yīng)私有屬性的get和set方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
@Override
public String toString() {
return "Person[name =" + name + " ,pwd=" + pwd + " ,age=" + age + ",sex=" + sex + "]";
}
}
封裝:
public class Demo01 {
public static int add( int a,int b){
return a+b;
}
public static void main(String[] args) {
System.out.println(1+1);
System.out.println(1+2);
System.out.println(1+3);
System.out.println(1+4);
System.out.println(1+5);
System.out.println(1+6);
System.out.println(add(1,1));
System.out.println(add(1,2));
System.out.println(add(1,3));
}
}
上述案例:為了避免不斷地+操作墙杯,把兩數(shù)相加寫入add方法中配并,后續(xù)直接調(diào)用add方法。把具體的操作流程統(tǒng)一管理在add方法中高镐,該過程就是封裝的一種集體表現(xiàn)形式
類的封裝
public class Demo02 {
/**
* public 共有
* protected 受保護
* private 私有
*
* */
//把屬性私有化
private String name;
private int age;
//對外提供屬性的設(shè)置方法
public void setName(String name){
this.name = name;
}
//對外提供屬性的訪問方法
public String getName(){
return this.name;
}
}
封裝需要注意的事項如下:
屬性的訪問權(quán)限盡量給的很小
對外單獨提供訪問方法
setName給屬性賦值
getName讀取屬性的值
1:由于面向?qū)ο蟮姆庋b性溉旋,我們盡量讓權(quán)限降到最低,在類里要在屬性前添加private修飾符嫉髓,從而提高安全性
2:定義getter和setter方法观腊,使得在main函數(shù)里的對象,不能在直接調(diào)用屬性了算行,只能通過getter和setter方法進行調(diào)用梧油,從而隱藏了實現(xiàn)細節(jié)