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

Core Java 卷 I 第 4 章精華筆記:類、對象、構造器、封裝與包機制

     編輯:Java 綜合教學

核心知識點提煉

1. 訪問修飾符

  • public:任意類可訪問
  • private:僅本類方法可訪問,封裝核心

2. 實例域與對象引用

實例域可為基本類型或對象引用(如 private String name),對象引用指向堆上對象。

3. 構造器特性

特性說明
同名與類名相同
多構造器支持重載
無返回值不寫 void
伴隨 new只能通過 new 調用,不可對現有對象再次調用
避免變量遮蔽參數名前加前綴(如 aName)區分實例域

4. this 隱式參數

public void raiseSalary(double byPercent) {
    double raise = this.salary * byPercent / 100;  // this 代表調用對象
    this.salary += raise;
}

this 只能在實例方法中使用,靜態方法無 this。

5. 訪問器與更改器

  • 訪問器:只讀屬性(getXxx())
  • 更改器:修改屬性(setXxx())

6. final 實例域

構造器執行結束前必須初始化,之後不可修改。適用於不可變屬性(如 name)。

7. 靜態域與靜態方法

  • static 域屬於類,全類共享一份(如 Math.PI)
  • 靜態方法無 this,只能訪問靜態域,常用於工具方法(Math.pow())
  • main() 為靜態方法,啟動時無對象存在

8. 參數傳遞:值傳遞

Java 只有值傳遞:

  • 基本類型:傳值副本,方法內修改不影響原值
  • 對象引用:傳引用副本,方法內可修改對象內部狀態,但無法替換引用本身

9. 構造器鏈調用

public Employee(String n, double s) {
    this(n, s, 0);  // 調用另一構造器,必須為首行
}
public Employee(String n, double s, int id) {
    this.name = n; this.salary = s; this.id = id;
}

10. 包機制與 import

  • 包名建議用反轉域名(com.company.project)保證唯一性
  • import java.util.*; 導入包下所有類;import java.util.Date; 導入單一類
  • 同包類無需 import 直接訪問

代碼範例:Employee 類完整版

public class Employee {
    private static int nextId = 1;
    private final String name;
    private double salary;
    private int id;

    public Employee(String n, double s) {
        name = n; salary = s; id = 0;
    }
    public String getName() { return name; }
    public double getSalary() { return salary; }
    public int getId() { return id; }
    public void setId() { id = nextId++; }
    public static int getNextId() { return nextId; }
    public void raiseSalary(double byPercent) {
        double raise = salary * byPercent / 100;
        salary += raise;
    }
    public static void main(String[] args) {
        Employee[] staff = new Employee[3];
        staff[0] = new Employee("Tom", 40000);
        staff[1] = new Employee("Dick", 60000);
        staff[2] = new Employee("Harry", 65000);
        for (Employee e : staff) {
            e.setId();
            System.out.printf("name=%s, id=%d, salary=%.2f%n", e.getName(), e.getId(), e.getSalary());
        }
        System.out.println("Next available id = " + Employee.getNextId());
    }
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved