愛轉圈筆記
勤思、體悟、總結、分享
面向對象——封裝
什麼是面向對象(Object Oriented,OO)?
面向對象是一種將簡單的、分散的事物逐漸抽象和歸類的思想
什麼是類?什麼是對象?
類是對象的抽象(集合),對象是類的實體(個例)
在學習面向對象之前,需要先了解一下java中的訪問修飾符,它們控制着元素的訪問權限。
√表示在當前範圍內可以訪問
修飾符\範圍 | 同類 | 同包 | 子類 | 所有 | 備註 |
---|---|---|---|---|---|
private | √ | 私有 | |||
friendly | √ | √ | 友好 | ||
protected | √ | √ | √ | 保護 | |
public | √ | √ | √ | √ | 公開 |
封裝
什麼是封裝?
高內聚,低耦合;將複雜的內部結構隱藏,只留出部分接口供外部調用。
例如動物吃東西,外部只要調用吃方法餵食物就可以了,不用管它怎麼吃,怎麼消化。
什麼是構造方法?
構造方法名與類名相同,沒有返回值;在聲明類時,系統會默認提供一個無參構造方法;若自行聲明構造方法,則默認構造方法將被覆蓋,所以在聲明JavaBean時,手動聲明一個無參構造方法,方便以後擴展。
什麼是JavaBean?就是自己定義的一種類。
JavaBean | 作用 |
---|---|
數據Bean | 通過實體類傳遞數據 |
業務Bean | 代碼複用 |
/**
* 動物類
* @author 愛轉圈
*
*/
public class Animal {
//類默認的構造方法,通過構造方法來實例化對象
public Animal() {
//super和this,在此處不做詳細解釋
//super指代父類對象
//this指代當前被實例化的對象
super();
}
//通過private關鍵字限制外部訪問
private String name;//動物的名字
private int age;//動物的年齡
//通過public修飾get/set方法用來給外部調用
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
//提供的公共方法中可以對成員變量進行控制
//而不是讓外部直接調用成員變量,防止出現不可預測的問題
if(age<0){
this.age = 0;
}
this.age = age;
}
//動物的吃方法
public void eat(String food){
//輸出當前動物的名字和吃了什麼東西
System.out.println(name+",吃了"+food);
}
//動物的睡方法
public void sleep(){
//輸出當前動物睡着了
System.out.println(name+",睡着了···");
}
}