12.Java 對象和類的關系/屬性/成員變量/方法/UML圖


面向過程和面向對象的區別

簡述

  1. 面向過程思想適合簡單、不需要協作的事務。比如單純駕駛汽車,不需要跟別人協作。
  2. 面向對象思想適合比較復雜的事務,無法列出1234步驟。比如如何造車?造車太復雜,需要很多協作才能完成。

總結

  1. 面向對象和面向過程都是解決問題的思維方式,都是代碼組織的方式。
  2. 解決簡單問題可以使用面向過程。
  3. 解決復雜問題:宏觀上使用面向對象把握,微觀處理上仍然是面向過程

對象和類的概念

簡述

  1. 對象有不同操作的方法、屬性、變量等
  2. 類可以看做是一個模板或者圖紙,系統根據類的定義來造出對象。
  3. 類:稱之為 class 。對象:稱之為 Object,instance(實例)。
  4. 某個類的對象等同於某個類的實例。同等含義。

類的定義

  1. 每個源文件必須有且只有一個 public class,並且類名和文件名保持一致。
  2. 一個 Java 文件可以同時定義多個 class
  3. 對於一個類來說,一般有三種常見的成員:屬性field、方法method、構造器constructor。這三個成員都可以定義零個或多個。

代碼示例:類的定義方式

// 下方定義的這些類都是空類,沒有任何實際意義。還需要去定義類的具體信息。
// 每個源文件必須有且只有一個 public class,並且類名和文件名保持一致。
public class SxtStu {
}
// 一個 Java 文件可以同時定義多個 class
class Tyre{
}
class Emage{
}
class Try{
}

代碼示例:簡單的學生類編寫

// 對於一個類來說,一般有三種常見的成員:屬性field、方法method、構造器constructor。這三個成員都可以定義零個或多個。
public class SxtStu {
    // 屬性(成員變量)
    int id;
    String sname;
    int age;
    // 方法
    void study(){
        System.out.println("我正在摸魚學習!");
    }
    // 構造方法
    SxtStu(){
    }
}

屬性(field(成員變量))

簡述

  1. 屬性用於定義該類或該類對象包含的數據或者說靜態特征。
  2. 屬性作用范圍是整個類體。
  3. 在定義成員變量時可以對其進行初始化,如果不進行初始化,Java 使用默認的值對其進行初始化。

屬性定義格式

[修飾符]  屬性類型  屬性名 = [默認值];

成員變量默認值

方法

簡述

  1. 方法用於定義該類或該類實例的行為特征和功能實現。比如一個學生類,他可以有學習或者玩游戲的行為特征或者說功能實現
  2. 方法是類和對象行為特征的抽象。方法很類似於面向過程中的函數。
  3. 面向過程中,函數是最基本單位,程序是由一個個函數調用組成。
  4. 面向對象中,整個程序的基本單位是類,方法是從屬於類和對象的。

方法定義格式

[修飾符]  方法返回類型  方法名(形參列表){
    // n 條語句
}

代碼示例:

public class SxtStu {
    // 方法
    void study(){
        System.out.println("我正在摸魚學習!");
    }
    void play(){
        System.out.println("我在玩游戲!LOL手游!");
    }
    // 構造方法
    SxtStu(){
    }
}

代碼示例:完整的對象與類方法的調用

  1. 程序必須要有 main 方法,作為程序執行的入口
  2. 構造方法:用於創建這個類的對象。無參數的構造方法可以由系統自動創建。
  3. 對於一個類來說,一般有三種常見的成員:屬性field、方法method、構造器constructor。這三個成員都可以定義零個或多個。
public class SxtStu {
    // 屬性(成員變量)
    int id;
    String sname;
    int age;
    // 方法
    void study(){
        System.out.println("我正在摸魚學習!");
    }
    void play(){
        System.out.println("我在玩游戲!LOL手游!");
    }
    // 構造方法:用於創建這個類的對象。無參數的構造方法可以由系統自動創建。
    SxtStu(){
    }
    public static void main(String[] args) {
        // 定義創建一個類的對象
        SxtStu stu = new SxtStu();
        // 對象調用 play() 方法
        stu.play();
        // 對象調用 study() 方法
        stu.study();
    }
}

代碼示例:模擬學生使用電腦學習

  1. 構造方法:用於創建這個類的對象。無參數的構造方法可以由系統自動創建。
  2. 對於一個類來說,一般有三種常見的成員:屬性field、方法method、構造器constructor。這三個成員都可以定義零個或多個。
// 模擬學生使用電腦學習
class Computer {
    String brand;  // 電腦品牌
}

public class SxtStu1 {
    // 定義屬性(成員變量)
    int year;
    String sname;
    int age;
    // 在 SxtStu1 類中定義一個 Computer 類的對象
    Computer comp;

    // 定義方法
    void study() {
        System.out.printf("我正在使用%s這個品牌的電腦摸魚學習!%n",comp.brand);
    }
    // 構造方法:用於創建這個類的對象。無參數的構造方法可以由系統自動創建。
    SxtStu1(){
    }

    public static void main(String[] args) {
        // 定義 SxtStu1 類的對象
        SxtStu1 stu1 = new SxtStu1();
        // stu1 對象調用 SxtStu1 類的屬性(成員變量)並賦值
        stu1.year = 2021;
        stu1.sname = "阿jun";
        stu1.age = 0;
        // 定義 Computer 類的對象
        Computer comp1 = new Computer();
        // comp1 對象調用 Computer 類的屬性(成員變量)並賦值
        comp1.brand = "神舟戰神";
        // stu1 對象調用 comp 類屬性(成員變量)並賦值為 comp1 的值
        stu1.comp = comp1;
        // 對象調用方法
        stu1.study();
    }
}

執行結果:

UML圖示例


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM