Day33--屬性的修飾符
-
public
修飾符- 含義:被
public
修飾的屬性可以在任何類中被訪問。這是一種最寬鬆的訪問控制級別。 - 示例:
class Person { public String name; } public class Main { public static void main(String[] args) { Person p = new Person(); p.name = "John"; System.out.println(p.name); } }
在這個例子中,
Person
類中的name
屬性被宣告為public
。在Main
類的main
方法中,可以直接訪問p.name
來設定和獲取name
的值。 - 含義:被
-
private
修飾符- 含義:
private
修飾的屬性只能在其所屬的類內部被訪問。這是一種最嚴格的訪問控制級別,用於隱藏類的內部實現細節。 - 示例:
class Person { private int age; public void setAge(int newAge) { if (newAge > 0) { age = newAge; } } public int getAge() { return age; } } public class Main { public static void main(String[] args) { Person p = new Person(); p.setAge(20); System.out.println(p.getAge()); } }
這裡
Person
類中的age
屬性是private
的。不能在Main
類中直接訪問p.age
,而是需要透過setAge
方法來設定age
的值,透過getAge
方法來獲取age
的值。 - 含義:
-
protected
修飾符- 含義:
protected
修飾的屬性可以在其所屬的類內部、同一個包中的其他類以及該類的子類(無論子類是否在同一個包中)中被訪問。 - 示例:
package com.example; class Parent { protected int protectedValue = 10; } class Child extends Parent { public void accessProtectedValue() { System.out.println(protectedValue); } } public class Main { public static void main(String[] args) { Child c = new Child(); c.accessProtectedValue(); } }
在這個例子中,
Parent
類中的protectedValue
屬性被protected
修飾。Child
類繼承自Parent
類,可以在Child
類的accessProtectedValue
方法中訪問protectedValue
。同時,Main
類在同一個包(com.example
)中,透過Child
類的例項也可以間接訪問protectedValue
。 - 含義:
-
預設(沒有修飾符)修飾符
- 含義:如果屬性沒有使用
public
、private
或protected
修飾,那麼它具有預設的訪問許可權。預設訪問許可權的屬性可以在同一個包中的其他類中被訪問,但不能在不同包的類中直接訪問。 - 示例:
package com.example; class DefaultAccessClass { int defaultValue; } class AnotherClassInSamePackage { public void accessDefaultValue() { DefaultAccessClass dac = new DefaultAccessClass(); dac.defaultValue = 5; System.out.println(dac.defaultValue); } } public class Main { public static void main(String[] args) { AnotherClassInSamePackage aci = new AnotherClassInSamePackage(); aci.accessDefaultValue(); } }
這裡
DefaultAccessClass
中的defaultValue
沒有修飾符,它可以被AnotherClassInSamePackage
(在同一個包com.example
中)訪問和修改。但是如果在其他包中的類想要訪問這個屬性,就會受到限制。 - 含義:如果屬性沒有使用