Java面向對象(類、對象、構造方法、this關鍵字)
1、什麼是類:類包含屬性和方法
- 對同一種事物的特徵(屬性)和行爲(方法)進行描述的抽象概念模型
- 是對象的數據類型
- 具有相同屬性和方法的一組對象的集合
- 舉例:比如人類、狗類(屬性:顏色、尾巴長度等;行爲:搖尾巴、會叫等)
- 表達的是有什麼能做什麼
2、類的構成:
(1)、對象的屬性和方法:
- 屬性:對象具有的各種靜態特徵,表達的是“有什麼”。比如狗的顏色、尾巴長度等
- 方法:對象有用的行爲,表達的是“會幹什麼”。比如狗會搖尾巴、會叫等
(2)、創建一個類的語法格式:
public class 類名{
//屬性
//方法}
(3)、創建類的示例:
public class Dog{
//屬性
String color="白色";
double tail=23;
//方法
public void wagTail(){
Sysem.out.println("狗狗正向你搖尾巴");
}
}
3、什麼是對象:
- 現實世界中存在的所有事物都是對象,看得見摸得着。比如一臺吉普車、一架鋼琴、一條黑色的狗等
- 類的實例化(new方式創建),類的具體實現。比如車類中的一臺黑色的吉普車
4、什麼是面向對象編程:從對象的角度出發分析事物的特徵和行爲進行編程的方式
5、面向對象編程的單一職責原則(single responsibility principle:SRP):不同的功能放在不同的類中,其目的就是爲了解耦
6、類和對象的關係:
(1)、類和對象的區別:
- 類是抽象的概念,僅僅是一個模板
- 對象是一個能看得見,摸的着的實體
- 類是對象的類型
- 對象是特定類型的數據
- 開發中先定義類,再實例化對象
(2)、對象實例化的步驟:new關鍵字:聲明對象是在棧中開闢一個空間,存儲的是鑰匙
創建對象在堆中開闢一個空間存儲數據
實例化對象的過程分爲兩部分:
聲明對象: Dog dog;
實例化對象:dog=new Dog();
Dog one=new Dog();
在計算機內存中開闢空間如圖所示:
每次實例化對象都會產生不同的對象:
Dog one=new Dog();
Dog two=new Dog();
內存開闢情況如圖所示:
多個對象可以指向同一塊實例化空間:
Dog one=new Dog();
Dog two=one;
內存開闢情況如圖所示:
(3)、對象實例化應該注意:
對象必須實例化之後才能使用;對象間的引用傳遞,實際上傳遞的堆內存空間的使用權
7、構造方法:
語法:
特點:
- 構造方法與類同名且沒有返回值
- 只能在對象實例化的時候通過new來調用
- 在類中沒有編寫構造方法時,系統會爲我們自動添加一個默認的無參構造方法
- 在類中編寫構造方法之後,無論有參數還是無參數,系統都不會在默認添加
- 一個類中可以有多個構造方法
8、this關鍵字
this:當前對象的默認引用
this的使用:
(1)、調用成員變量,解決成員屬性和局部變量的同名衝突
(2)、調用成員方法
(3)、調用重載的構造方法