Java 是一種面向對象的編程語言,它支持面向對象編程的三大特性:封裝、繼承和多態。其中,封裝是面向對象編程中最重要的概念之一。
在 Java 中,封裝指的是將對象的屬性和行為打包起來,使其隱藏在對象內部。這樣,外部代碼就無法訪問對象的內部細節,只能通過對象提供的公共方法來操作對象。
Java 中的封裝是通過訪問修飾符來實現的。訪問修飾符有四種:public、protected、private、default(沒有修飾符)。它們的作用范圍如下:
- public:公共的,任何代碼都可以訪問。
- protected:受保護的,只有同包或者子類中的代碼可以訪問。
- private:私有的,只有本類中的代碼可以訪問。
- default:沒有修飾符,只有同包中的代碼可以訪問。
通過封裝,我們可以將對象的屬性和行為組合成一個整體,從而提高代碼的可讀性、可維護性和安全性。下面是一個演示 Java 封裝的例子:
public class Person { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setAge(int age) { if (age >= 0 && age<= 150) { this.age = age; } else { throw new IllegalArgumentException("Invalid age: " + age); } } public int getAge() { return age; } }
在這個例子中,我們定義了一個 Person 類,它有兩個私有屬性 name 和 age。同時,我們也定義了一個公共的構造方法和三個公共方法:getName、setAge 和 getAge。
由于 name 和 age 是私有屬性,外界無法直接訪問它們。相反,我們通過 getName 和 getAge 方法提供了對它們的訪問。而 setAge 方法則用于設置 age 屬性,但它會對參數進行有效性檢查,保證 age 符合人類的生理條件。如果 age 不合法,setAge 方法會拋出一個異常。
在使用中,我們可以通過構造方法創建一個 Person 對象,并通過 getName、setAge 和 getAge 方法來訪問其屬性。
Person person = new Person("Tom", 20); System.out.println(person.getName()); person.setAge(21); System.out.println(person.getAge());
從這個例子中可以看出,封裝可以讓代碼變得更加安全、可靠、易于使用和維護。同時,它也是面向對象編程中最核心的概念之一,是學習對象和類的基礎。