Java 訪問修飾符和范圍對于面向?qū)ο缶幊虂碚f是非常重要的知識點。訪問修飾符可以控制類、變量、方法等成員的訪問范圍,使得程序在使用時更加安全、可維護(hù),而范圍則規(guī)定了哪些部分可以訪問成員。
Java 中有四種訪問修飾符:public、protected、default 和 private。
public:public 訪問修飾符是最為寬松的,可以被所有類訪問。如果一個類或成員被修飾為 public,則其它任何類都可以訪問它。
// 示例代碼,定義了一個 public 類 public class MyClass { // public 成員變量 public int num = 10; // public 方法 public void myMethod() { System.out.println("This is a public method."); } }
protected:protected 修飾符表示該成員只能被其自身的類、子類或同一包中的類訪問。
// 示例代碼,定義了一個 protected 父類 protected class MyParentClass { // protected 父類成員變量 protected int num = 10; // protected 父類方法 protected void myParentMethod() { System.out.println("This is a protected method of MyParentClass."); } } // 子類 public class MyChildClass extends MyParentClass { public void show() { // 在子類中訪問父類 protected 成員 System.out.println("num = " + num); // 調(diào)用父類 protected 方法 myParentMethod(); } }
default:default 修飾符默認(rèn)情況下是省略不寫的,表示該成員只能被同一包中的類訪問。在 Java 中,default 訪問修飾符被稱為包訪問或包級訪問。
// 示例代碼,在同一包中定義一個 default 類 class MyDefaultClass { // default 成員變量 int num = 10; // default 方法 void myDefaultMethod() { System.out.println("This is a default method."); } } // 在同一包中使用 MyDefaultClass public class MyOtherClass { public void show() { MyDefaultClass myDefault = new MyDefaultClass(); // 在同一包中和 MyDefaultClass 同一級別的類中訪問 default 成員變量和方法 System.out.println("num = " + myDefault.num); myDefault.myDefaultMethod(); } }
private:private 訪問修飾符是最為嚴(yán)格的,表示該成員只能被其自身的類訪問,不包括子類和同一包中的類。
// 示例代碼,定義了一個 private 類 private class MyPrivateClass { // private 成員變量 private int num = 10; // private 方法 private void myPrivateMethod() { System.out.println("This is a private method."); } } // 在同一類中使用 MyPrivateClass public class MyClass { public void show() { MyPrivateClass myPrivate = new MyPrivateClass(); // 在同一類中訪問 private 成員變量和方法 System.out.println("num = " + myPrivate.num); myPrivate.myPrivateMethod(); } }
總結(jié)來說,訪問修飾符和范圍是 Java 程序設(shè)計中非常重要的一部分,掌握好了這兩個知識點,可以使得程序更加嚴(yán)謹(jǐn)、可維護(hù)。在實際開發(fā)中,需要根據(jù)實際需要選擇適當(dāng)?shù)脑L問修飾符并規(guī)定訪問范圍,以實現(xiàn)良好的設(shè)計與編碼。