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

Java 面向對象編程核心筆記:類與對象、構造方法、重載、this 關鍵字

     編輯:Java 綜合教學

從面向過程到面向對象

面向過程:數據(結構體)與行為(函數)分離,邏輯分散,維護困難。面向對象 (OOP):將數據與操作數據的方法封裝在**類**中,以**對象**為基本運行單元,三大特性:封裝、繼承、多態。

核心概念速記

  • 類:抽象模板,定義屬性(字段)與行為(方法)。
  • 對象:類的具體實例,new ClassName() 在堆內存分配,每次 new 產生獨立對象,互不影響。
  • 需求分析映射:名詞 → 類/屬性;動詞 → 方法。

方法簽名與重載

方法簽名 = 方法名 + 參數類型列表(順序敏感)。與返回值、參數名、修飾符、拋出異常無關。

public void print(int a, String b) {}
public void print(String b, int a) {} // 參數順序不同 → 重載合法
public int print(int a, String b) {}  // 僅返回值不同 → 編譯錯誤(非重載)

重載規則:同一類中,方法名相同,參數列表不同(類型、個數、順序任意一項)。

構造方法:對象誕生的入口

  • 命名規則:方法名**必須與類名完全一致**(大小寫敏感)。
  • 無返回值聲明:連 void 都不寫。
  • 默認構造器:類無顯式構造器時,編譯器自動生成無參構造器;一旦定義任意構造器,默認構造器消失。
  • 作用:初始化對象狀態(賦值字段)、執行創建時邏輯。
public class Person {
    private String name;
    private int age;

    // 無參構造器
    public Person() {}

    // 全參構造器
    public Person(String name, int age) {
        this.name = name; // this 區分字段與參數同名
        this.age = age;
    }
}

this 關鍵字:當前對象的引用

用法說明示例
this.field訪問當前對象字段(區分同名參數/局部變量)this.name = name;
this.method()調用當前對象其他方法this.init();
this(...)構造器間調用,**必須放首行**public Person() { this("unknown", 0); }
return this鏈式調用返回當前對象public Person setName(String n) { this.name=n; return this; }
傳遞當前對象作為參數傳給其他方法other.process(this);

內存圖解:棧幀與堆對象

Person p = new Person("Alice", 20);
// 棧:p (引用) ──▶ 堆:Person 對象 { name="Alice", age=20 }
// 再執行:Person q = p;
// 棧:q (引用) ──▶ 同一堆對象
// p.name = "Bob" → q.name 也變為 "Bob"(引用共享)

避坑指南

  1. 忘寫無參構造器導致反射/框架實例化失敗(Hibernate、Spring、MyBatis 等需無參構造器)。
  2. 構造器中調用可覆寫方法(非 final/private),子類構造器未執行時父類調用子類方法導致字段未初始化。
  3. this 不能在 static 方法中使用(無當前對象)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved