[問題] 封裝Getter/Setter
各位大大好,
就我所知VB6和JavaScript裡面都有Getter/Setter的概念,
VB6是物件的屬性有Get和Set的方法,
JavaScript則是物件用以下方式宣告:
var obj = {
_foo,
get foo() {
return this._foo;
},
set foo(value) {
this._foo = value;
}
};
然後就可以這樣如下使用:
obj.foo = "bar";
window.alert(obj.foo);
請問Java有沒有辦法做到類似這種可以直接用 = 這個運算元
來達成實際是執行Getter/Setter函數的方法?
謝謝。
--
★∥ ○ ◢ 〞` ◣ ◥◣◢◣◢◣ ◢▏。 ○ ο ∣★
★| ° ◢ ╮ ██◤ █◤◥◤█ ∥ o ° ∥★
★∥ 。 ● ● ◤ ◥ █ █ ∥ ◢╱﹋◣ 。 ∣★
★∣ ◥ˍ ◤◤ ◢◤ ◢◢◤██◤ ◣ ◢╱ ● ︶ ( ∥★
★∥ ( ◢◤ ◤ing ∥say ◢███ ╰ ◤ ζ ) ∣★
★│ ) mt.rmstudio.tw ︾ mt@moztw.org ◤ ◥◢ ◤◤ wnqui ∥★
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.42.67.27
→
07/15 17:54, , 1F
07/15 17:54, 1F
→
07/16 09:04, , 2F
07/16 09:04, 2F
→
07/16 12:43, , 3F
07/16 12:43, 3F
→
07/16 12:44, , 4F
07/16 12:44, 4F
→
07/16 19:49, , 5F
07/16 19:49, 5F
我看很多 Java 程式碼都是寫成:
public class Foo {
private int _bar;
public int getBar() {
return _bar;
}
public void setBar(int bar) {
if (bar >= 0) _bar = bar;
}
public Foo(int bar) {
_bar = bar;
}
public Foo() {
this(0);
}
}
所以使用起來會是像這樣的用法:
Foo foo = new Foo();
foo.setBar(3);
System.out.println(foo.getBar()); // 3
foo.setBar(-8); // invalid bar
System.out.println(foo.getBar()); // 3
我只是期待可以這樣做同時達成Getter/Setter概念:
foo.bar = 3; // _bar = 3
foo.bar = -8; // _bar won't change
不過看起來只有VB, JS, PHP才有這種特殊用法,
至於C/C++, Java我還是乖乖開getFoo/setFoo的function好了…
※ 編輯: a60301 來自: 114.42.70.180 (07/18 04:36)
→
07/18 13:55, , 6F
07/18 13:55, 6F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):