欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

java的getter和setter區別

謝彥文1年前7瀏覽0評論

Java是一門面向對象的編程語言,具有封裝、繼承、多態等特性。其中封裝是一種重要的特性,它可以將類的內部實現和外部接口進行分離,隱藏對象的具體實現,僅暴露訪問接口。getter和setter是封裝的常用手段。

getter用于獲取一個對象的屬性值,setter用于設置一個對象的屬性值。它們的實現類似,都是通過訪問類的私有變量來進行操作。具體實現如下:

public class Person {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}

在上述代碼中,getName方法用于獲取name屬性值,setName方法用于設置name屬性值。注意到這里的name屬性是私有變量,外部無法直接訪問,只能通過訪問其getter和setter方法來進行操作。

getter和setter方法的優點是可以保證對象的數據封裝性和安全性。由于屬性是私有變量,外部無法直接訪問,因此可以避免一些不必要的錯誤。同時,如果需要修改屬性的訪問控制方式,只需要修改getter和setter方法即可,不用改變屬性本身。

另外,getter和setter方法可以進行一些附加的操作,例如對屬性進行驗證、計算等,從而實現更精細的控制。例如:

public class Person {
private String name;
private int age;
public String getName() {
return name.strip();
}
public void setName(String name) {
if (name.isBlank()) {
throw new IllegalArgumentException("Name cannot be blank");
}
this.name = name.strip();
}
public int getAge() {
return age;
}
public void setAge(int age) {
if (age< 0 || age >200) {
throw new IllegalArgumentException("Invalid age value");
}
this.age = age;
}
}

在上述代碼中,getName方法對name屬性進行了修剪操作,去掉前后空格。setName方法對name屬性進行了非空檢查,并且也進行了修剪操作。getAge和setAge方法對age屬性進行了非負數、小于200的檢查。這樣可以進一步確保對象數據的正確性。

總之,getter和setter是Java中封裝特性的常用手段,可以提高對象的封裝性和安全性。同時,它們也可以進行一些有用的附加操作,滿足更精細的控制需求。