首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 語言入門教程(十):類關係建模——關聯與依賴

     編輯:Java 相關知識

從單類語法進階到多類協作,掌握關聯與依賴兩大核心類關係,是面向對象設計的關鍵一步。本文通過「培訓中心選課」場景,演示如何識別、建模並代碼實現這兩種關係,並引出集合容器的必要性。

關聯:Has-A,長期持有

定義:類 A 擁有類 B 的實例作為屬性,生命週期通常綁定。

class A { private B b; }  // B 是 A 的字段
class B { }

場景:Student 擁有 Course(選課結果)。

public class Course {
    private String title; private double price;
    // 構造器、getter/setter
}

public class Student {
    private String name;
    private Course course;  // 關聯:Student has-a Course

    public Student(String name) { this.name = name; }
    public void chooseCourse(Course c) { this.course = c; }  // 同時也是依賴
    public Course getCourse() { return course; }
}

依賴:Use-A,短暫使用

定義:類 A 的方法需要類 B 的對象作為參數、返回值或局部變量協作,調用結束關係即結束。

class A { public void f(B b) { } }  // B 是方法參數
class B { }

場景:Student.chooseCourse(Course) 需傳入 Course 參數完成選課動作。

關鍵區別對比

維度關聯依賴
UML 箭頭實線箭頭虛線箭頭
代碼體現成員字段方法參數/返回值/局部變量
生命週期較長,隨擁有者極短,隨方法調用
語義「擁有」、「包含」「使用」、「調用」
耦合強度強弱

類即類型:打破基本類型迷思

初學者常覺 String、int 才是類型,自定義類不是。實則 每個類都是一種類型,Course 作為字段類型、參數類型、返回類型完全合法,與 String 無本質區別——只是前者在 JDK,後者在你的項目中。

擴展挑戰:一生選三門課

若需求變更:每位學生最多選 3 門課,private Course course; 單字段不再足夠。引出數據容器:

  • 數組:Course[] courses = new Course[3]; 固定長度
  • 集合:List<Course> courses = new ArrayList<>(); 動態擴容、豐富 API

下一講將深入講解數組與集合框架,解決「一對多」關聯建模。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved