使用GET,SET方法的好處:
隱藏內部成員,但又想外部能夠以某
種正確的方式來訪問和修改內部成員的屬性,
因此通過構造GET,SET訪問器來控制訪問成員,確保數據的一致,完整和正確性。
下面分析JAVA和C#寫法
JAVA寫法:通過定義GET,SET方法來訪問內部屬性,達到控制訪問的目的。
命名規范:所有成員變量,最好以小寫字母開頭。GET,SET訪問器(方法)的對應屬性值則以大寫字母開頭。
public class Dog { private int age; private String name; public int getAge() { this.age; } // SET方法 public void setAge(int age) { // 這世界有超過30歲的狗嗎? if (age <= 30) { this.age = age; } } public String getName() { // 后綴標識這是一只狗 return this.name + "(Dog)"; } public void setName(String name) { this.name = name; } public static void main(String[] args) { Dog dog = new Dog(); // 輸入錯誤的年齡 dog.setAge(40); dog.setName("honey"); System.out.println(dog.getName() + ",年齡:" + dog.getAge()); // 輸入正確的信息 dog.setAge(4); dog.setName("baby"); System.out.println(dog.getName() + ",年齡:" + dog.getAge()); } }
C#寫法
C#單獨定義了GET,SET訪問器的書寫方法,通過暴露的成員“屬性”,來達到控制訪問。
命名規范:成員變量,以下划線作為前綴,可省去this,避免覆蓋,對於屬性則以大寫字母開頭。
public class Dog { private int _age; private String _name; public int Age { get { return _age; } set { if (value <= 30) { _age = value; } } } public String Name { get { return _name + "(Dog)"; } set { _name = value; } } static void Main(String[] args) { Dog dog = new Dog(); //輸入錯誤的年齡 dog.Age = 40; dog.Name = "honey"; Console.WriteLine(dog.Name + ",年齡:" + dog.Age + "\n"); //輸入正確的信息 dog.Age = 4; dog.Name = "baby"; Console.WriteLine(dog.Name + ",年齡:" + dog.Age + "\n"); Console.ReadLine(); } }
C#的寫法:相比JAVA,更加簡潔明了,通過暴露屬性方法,而不是通過調用方法的方式來訪問內部屬性,不僅更加直觀,通過也簡化了繁瑣的代碼書寫。