好程序員Java教程分享Java面向對象與面向過程,面向對象: 是一種看待問題, 解決問題的思維方式, 著眼點在于找到一個能夠幫助解決問題的實體, 然后委托這個實體來解決問題 面向過程: 是一種看待問題, 解決問題的思維方式, 著眼點在于問題是怎樣一步步的解決的, 然后親力親為的去解決這個問題 Java是一種面向對象的語言: 用Java這門語言, 可以很容易的寫出具有面向對象思維方式的代碼 用面向對象的編程語言寫出的代碼, 一定是面向對象的代碼? 錯! > 大象裝冰箱: > > 面向過程: > > 1. 打開冰箱門 我 > 2. 把大象裝進去 我 > 3. 關上冰箱門 我 > > 面向對象: > > 1. 打開冰箱門 冰箱 > 2. 把大象裝進去 大象 > 3. 關上冰箱門 冰箱 > 小明要去組裝一臺電腦: > > 面向過程: > > 1. 補充電腦相關知識 小明 > 2. 去市場買零配件 小明 > 3. 將零配件運回家中 小明 > 4. 組裝 小明 > > 面向對象: > > 1. 找到一個懂電腦的朋友(老王) 小明 > 2. 去市場買零配件 老王 > 3. 將零配件運回家中 快遞 > 4. 組裝 老王 **類和對象** 對象: 能夠幫助解決問題的那個實體 類: 若干個具有相同的特征和行為的對象的集合 類和對象的關系: 類是對象的集合, 對象是類的個體 張三, 李四, 王五, 趙六, 人類 哈士奇, 泰迪, 金毛, 阿拉斯加, 拉布拉多, 薩摩耶... 狗類 快遞: 順豐, 各種通, 各種達, 超級英雄(Super Hero): Caption American, Iron man, Spider man, Doctor Strange, Ant #### 1.6.2 類的設計 類的語法: ```java class 類名 { // 類體 // 類是若干個具有相同的特征和行為的對象的集合 // 在類體中, 定義了這些相同的特征和行為 // 特征: 表現(xiàn)出的是屬性(就是一個全局變量) // 行為: 表現(xiàn)出的是方法(不要加static) // 屬性, 是有默認值的 // 整型: 0 // 浮點型: 0.0 // 布爾型: false // 字符型: '\0' '\u000' // 引用數(shù)據(jù)類型: null String name; int age; void eat() {} void sleep() {} void coding() {} } ``` 注意事項: 1. 類名是一個標識符, 遵循大駝峰命名法 2. 一個java文件中可以寫多個類, 但是只有和文件名相同的那個類名可以修飾為public 3. 在程序編譯的時候, 每一個類都會生成一個.class字節(jié)碼文件, 而且.class文件的名字和類名相同 注意: 在程序中, 是先有類, 然后再從這個類中實例化一個對象 #### 1.6.3 對象的實例化 #### 1.6.4 對象的內存分析 #### 1.6.5 類中的成員的訪問 **static**: 用關鍵字static修飾的成員, 叫做靜態(tài)成員 沒有用關鍵字static修飾的成員, 叫做非靜態(tài)成員 **靜態(tài)成員**: 1. 靜態(tài)成員是屬于類的, 在訪問的時候, 需要用類來訪問 2. 靜態(tài)成員開辟空間, 是在這個類第一次被加載到內存中的時候開辟的 **非靜態(tài)成員**: 1. 非靜態(tài)成員是屬于對象的, 在訪問的時候, 需要用對象來訪問 2. 非靜態(tài)成員開辟空間, 是在這個對象被實例化的時候開辟的 1. 靜態(tài)方法中, 不能直接訪問非靜態(tài)成員 2. 在非靜態(tài)的方法中, 可以直接訪問靜態(tài)的成員 ```java class Person { String name; static int a; void eat() {} static void sleep() {} } class Program { public static void main(String[] args) { Person xiaoming = new Person(); // 訪問非靜態(tài)成員 xiaoming.name = "xiaoming"; xiaoming.eat(); // 訪問靜態(tài)成員 Person.a = 10; Person.sleep(); // 注: // 訪問靜態(tài)的成員, 也可以使用對象來訪問, 但是會有警告 // 推薦使用類來訪問靜態(tài)成員 } } ``` #### 1.6.6 類是一種自定義的類型 #### 1.6.7 this關鍵字 > this: 在程序中,代表對當前對象的引用。 > > 當前對象: > > this關鍵字是需要用在某一個非靜態(tài)方法中。 > > 非靜態(tài)方法需要用對象來訪問,哪個對象調用了這個方法,this就是誰 > this關鍵字可以被省略: > > 在類中訪問當前的非靜態(tài)的成員,可以省略掉this > > 但是有一種情況不能省略: > > ```java > public class Person { > String name; > int age; > char gender; > > void setInfo(String name, int age, char gender) { > // 就近原則 > this.name = name; > this.age = age; > this.gender = gender; > } > } > ``` |
|
來自: 好程序員IT > 《Java培訓教程》