好程序員Java教程分享Java面向對象與面向過程

  好程序員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 類的設計

類的語法:

class 類名 {
    // 類體
    // 類是若干個具有相同的特徵和行爲的對象的集合
    // 在類體中, 定義了這些相同的特徵和行爲
    // 特徵: 表現出的是屬性(就是一個全局變量)
    // 行爲: 表現出的是方法(不要加static)
    // 屬性, 是有默認值的
    // 整型: 0
    // 浮點型: 0.0
    // 布爾型: false
    // 字符型: '\0'  '\u000'
    // 引用數據類型: null
    String name;
    int age;

    void eat() {}
    void sleep() {}
    void coding() {}
}

注意事項:

  1. 類名是一個標識符, 遵循大駝峯命名法
  2. 一個java文件中可以寫多個類, 但是隻有和文件名相同的那個類名可以修飾爲public
  3. 在程序編譯的時候, 每一個類都會生成一個.class字節碼文件, 而且.class文件的名字和類名相同

注意:
在程序中, 是先有類, 然後再從這個類中實例化一個對象

1.6.3 對象的實例化

1.6.4 對象的內存分析

1.6.5 類中的成員的訪問

static:

用關鍵字static修飾的成員, 叫做靜態成員

沒有用關鍵字static修飾的成員, 叫做非靜態成員

靜態成員:

  1. 靜態成員是屬於類的, 在訪問的時候, 需要用類來訪問
  2. 靜態成員開闢空間, 是在這個類第一次被加載到內存中的時候開闢的

非靜態成員:

  1. 非靜態成員是屬於對象的, 在訪問的時候, 需要用對象來訪問
  2. 非靜態成員開闢空間, 是在這個對象被實例化的時候開闢的

  3. 靜態方法中, 不能直接訪問非靜態成員
  4. 在非靜態的方法中, 可以直接訪問靜態的成員
class Person {
    String name;
    static int a;

    void eat() {}
    static void sleep() {}
}
class Program {
    public static void main(String[] args) {
        Person xiaoming = new Person();
        // 訪問非靜態成員
        xiaoming.name = "xiaoming";
        xiaoming.eat();
        // 訪問靜態成員
        Person.a = 10;
        Person.sleep();
        // 注: 
        // 訪問靜態的成員, 也可以使用對象來訪問, 但是會有警告
        // 推薦使用類來訪問靜態成員
    }
}

1.6.6 類是一種自定義的類型

1.6.7 this關鍵字

this: 在程序中,代表對當前對象的引用。

當前對象:

​ this關鍵字是需要用在某一個非靜態方法中。

​ 非靜態方法需要用對象來訪問,哪個對象調用了這個方法,this就是誰

this關鍵字可以被省略:

在類中訪問當前的非靜態的成員,可以省略掉this

但是有一種情況不能省略:

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;
  }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章