面向物件一
面向過程和麵向物件
面向過程:就是一步一步的去執行,每個動作都是自己來做
面向物件:就是指揮別人來做,更符號現實生活.
面向物件
什麼是抽象:所謂抽象,就是從特定的角度出發,關注特徵,行為,從而產生一個新事物的過程
類:是對某一事物的統稱;(特徵和行為)
物件:表示現實生活中的一個個體;即例項
變數
成員變數:定義在類中方法外,也稱欄位(field),屬於物件變數
區域性變數:定義在方法中
成員變數有預設值,就算不賦值也可以使用
區域性變數沒有預設值,不初始化就不能直接使用
變數的作用域
成語變數在整個類中都可以使用(靜態的除外)
區域性變數只能在這個方法中
變數的生命週期
成員變數儲存在堆記憶體中,隨著物件的建立而建立,隨著物件的銷燬而銷燬
成員變數屬於物件
區域性變數儲存在棧記憶體中,隨著方法的壓棧而建立,隨著方法的彈棧而銷燬
類的定義
類是擁有相同特徵(狀態)和行為的多個物件的抽象
- 使用成員變數來表示狀態
- 使用成員方法來表式行為(功能)
1 public class 類名{ 2 3 //成員變數 4 5 修飾符 資料型別 變數名;//public String name; 6 //成員方法 7 8
注意
成員變數和成員方法不能用static,static修飾屬於類
物件的操作
建立物件
類名 物件變數名 = new 類名();
操作物件的成員變數
1 public class CatDemo { 2 3 public static void main(String[] args){ 4 5 //建立物件6 Cat c = new Cat(); 7 //給成員變數賦值 8 c.name = "tom"; 9 c.age = 3; 10 //呼叫方法 11 c.say(); 16 17 } 24 25 } 26 27 class Cat{ 28 29 String name; 30 int age; 31 32 public void say(){ 33 34 System.out.println("說話"); 35 36 } 37 38 }
物件名.變數名 = 值;
操作物件的成員方法
物件名,方法名(引數);
物件的例項化過程
Cat c = new Cat();
構造器
Cat c = new Cat();
其實這裡是呼叫了無參的構造器就是new 關鍵字後面的 Cat();
構造器的作用
用於建立物件 還可以給成員變數賦值用的
語法:
修飾符 類名(引數列表){
程式碼
}
注意事項:
構造器的方法名和類名一樣
不能有返回值
預設構造器, 在類中我們自己不定義構造器時,系統會為我們提供一個無參的構造器public 類名(){}
假如我們自己寫了構造器的話,系統就不會提供了
構造器之間可以過載
封裝的思想
封裝是面向物件的三大特徵之一
把物件的欄位和方法存放在一個類中
資訊隱藏,儘可能隱藏物件的資料和功能實現細節
我們一般把成員變數把使用private 修飾 然後提供setter和getter來給變數取值和賦值
封裝的好處
保證資料的安全性,防止呼叫者隨意修改
提高元件的重用性,把公共功能放到一個類中,誰需要該功能,直接呼叫
訪問修飾符
private修飾的成員只能在本類中使用,出了本類就不能使用了,這個就是封裝的體現;
public表示在整個專案中都可以訪問
javaBean規範
類要使用public修飾
成員變數使用privaet
提供公共無參構造器
每個成員變數要提供getter和setter方法
1 public class Person{ 2 3 private String name; 4 private int age; 5 6 7 public void setName(String name){ 8 this.name = name; 9 10 } 11 12 public String getName(){ 13 14 return name; 15 16 } 17 18 public void setAge(int age){ 19 20 this.age = age; 21 } 22 23 public int getAge(){ 24 25 return age; 26 } 35 }