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

Java 面向對象核心:類與對象、封裝繼承多態、構造器、static、參數傳遞

     編輯:Java 綜合教學

Java 面向對象核心:類與對象、封裝繼承多態、構造器、static、參數傳遞

面向過程 vs 面向對象

維度面向過程 (C)面向對象 (C++/Java)
思維方式自上而下、步驟序列尋找名詞→建立類→定義屬性/方法→類之間關係
適合場景簡單、線性流程 (如開車:踩離合→掛檔→踩油門)複雜系統 (如造車:引擎/車輪/車身各自封裝、組裝)
核心差異關注「怎麼做」關注「誰來做」

宏觀用 OO 把握架構,微觀用 PO 處理細節 — 這是工程師的成熟標誌。

類與對象

  • 類:模板/藍圖,定義一類事物的靜態屬性與動態行為
  • 對象:類的實例,具體事物,佔用堆內存
  • ClassName obj = new ClassName():實例化
class Car {
    String name; int age; String color; String zuowei;
    
    // 無參構造器 (若自定義有參構造器,系統不再提供)
    public Car() {}
    
    // 有參構造器:創建時直接賦值
    public Car(String name, int age, String color, String zuowei) {
        this.name = name; this.age = age; this.color = color; this.zuowei = zuowei;
    }
    
    void run() { System.out.println("我是汽車我能跑,還能帶人跑"); }
}

public static void main(String[] args) {
    Car car = new Car("極品寶馬", 3, "黑色", "真皮");
    car.run();
}

三大特性

特性核心思想關鍵字/機制
封裝隱藏內部實現,對外暴露介面private + getter/setter、權限修飾符
繼承子類複用父類代碼,建立 is-a 關係extends、super、@Override
多態父類引用指向子類對象,運行期動態綁定向上轉型、方法覆寫、動態綁定

權限修飾符可見性矩陣

privatedefaultprotectedpublic
本類✓✓✓✓
同包類✗✓✓✓
子類(異包)✗✗✓✓
其他包類✗✗✗✓

static 關鍵字

  • 修飾變數/方法 → 屬於類、共享、ClassName.member 存取
  • static final → 常量 (命名全大寫+下劃線)
  • 限制:靜態方法不可用 this、不可直接呼叫非靜態成員、區域變數不可 static
  • 工廠方法模式:NumberFormat.getPercentInstance()

方法參數傳遞機制

Java 只有值傳遞:基本型別傳值副本,引用型別傳引用副本 (指向同一物件)

場景能否修改原值說明
基本型別參數否修改的是副本
引用型別參數 — 修改物件狀態是obj.setName("new") 影響原物件
引用型別參數 — 重新指向新物件否obj = new Obj() 只改變區域引用
// 示例:swap 無法交換實際物件引用
public static void switchBook(Book b1, Book b2) {
    Book temp = b1; b1 = b2; b2 = temp; // 僅交換區域引用
}

實戰練習:三維空間點類

class Point {
    double x, y, z;
    public Point(double x, double y, double z) { this.x=x; this.y=y; this.z=z; }
    public double getDistance(Point p) {
        return Math.sqrt(Math.pow(x-p.x,2) + Math.pow(y-p.y,2) + Math.pow(z-p.z,2));
    }
}

Point p = new Point(5, 6, 7.8);
Point origin = new Point(0, 0, 0);
System.out.println(p.getDistance(origin)); // 輸出距離
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved