JBTALKS.CC

标题: 关与java de get and set method。。(我基础不好) [打印本页]

作者: wo不帅    时间: 2011-7-13 12:25 AM
标题: 关与java de get and set method。。(我基础不好)
关与这两个method...
打出来我会,可是真正的用途我不知道。。
所以有时不知道几时才需要用这两个method...
作者: Dhilip89    时间: 2011-7-13 09:12 AM
本帖最后由 Dhilip89 于 2011-7-13 09:13 AM 编辑
关与这两个method...
打出来我会,可是真正的用途我不知道。。
所以有时不知道几时才需要用这两个method. ...
wo不帅 发表于 2011-7-13 12:25 AM
  1. public class MyClass {
  2.     private int x;
  3.     public int y;

  4.     public MyClass() {
  5.     }

  6.     public int getX() {
  7.         return this.x;
  8.     }
  9.    
  10.     public void setX(int x) {
  11.         this.x = x;
  12.     }
  13. }
复制代码
  1. public class MyApp {
  2.     public static void main(String[] args) {
  3.         MyClass obj = new MyClass();

  4.         // 因为 obj.x 是 private 所以要用 get(accessor) / set(mutator)  
  5.         obj.setX(100);

  6.         // obj.y 是 public 所以可以直接调用
  7.         obj.y = 250;

  8.         System.out.println("obj.x = " + obj.getX());
  9.         System.out.println("obj.y = " + obj.y);
  10.     }
  11. }
复制代码

作者: Super-Tomato    时间: 2011-7-13 02:17 PM
关与这两个method...
打出来我会,可是真正的用途我不知道。。
所以有时不知道几时才需要用这两个method. ...
wo不帅 发表于 2011-7-13 12:25 AM



private 属性不能直接被赋予值的時候就需要個 set method
但 get/set method 的好處是可以先用來做些所需的判斷,如判斷参數的值是不是為空等
作者: 宅男-兜着走    时间: 2011-7-13 11:16 PM
1. 能在你的get/set property 内判断 值, 假设你直接允许你的开发团去给属性赋予值 是不好的。
2. 维持个标准,
3. 同样的地方可能会派上用场, 代码复用。
作者: ~Zero    时间: 2011-7-14 10:07 AM
有些时候你要一些 parameter 只能 get,不能 set;或只能 set 不能 get。
作者: wo不帅    时间: 2011-7-14 10:34 PM
謝謝你們的講解。。
我大概get到了。。
作者: shern91    时间: 2014-1-16 10:30 PM
提示: 作者被禁止或删除 内容自动屏蔽
作者: slay_alex92    时间: 2014-1-17 09:59 PM
本帖最后由 slay_alex92 于 2014-1-17 10:05 PM 编辑
shern91 发表于 2014-1-16 10:30 PM
this 是拿来做么?


this就是指你現在這個object哦
例如
  1. public class Test
  2. {
  3.         public int x;
  4.        
  5.         public Test(int x) //Constructor
  6.         {
  7.                 this.x = x; //外面第三行有x,但是這個constructor的argument也叫做x,所以你
  8.         }                 //在constructor裡面呼叫x,compiler會認為你在呼叫第5行的x(這個現象就叫shadow),
  9. }                       //如果你要在這個constructor裡面呼叫第三行的x,就要在前面加上this,
  10.                         //因為this是這個object instance的意思,而第三行的x是instance variable
复制代码

作者: slay_alex92    时间: 2014-1-17 10:04 PM
是encapsulation的概念,java的instances variable最好都設成private,要用set/get的method來操作
這樣的程式安全性比較高,也比較容易維護
作者: shern91    时间: 2014-1-19 12:00 AM
提示: 作者被禁止或删除 内容自动屏蔽
作者: slay_alex92    时间: 2014-1-19 12:01 AM
shern91 发表于 2014-1-19 12:00 AM
你的解释很清楚哦,谢谢...比我在学校学的我都不明白...顺便问一下super几时可以用到?是不是在inherit才 ...

是哦 你等等我寫個example給你看看
作者: shern91    时间: 2014-1-19 12:04 AM
提示: 作者被禁止或删除 内容自动屏蔽
作者: slay_alex92    时间: 2014-1-19 12:11 AM
本帖最后由 slay_alex92 于 2014-1-19 02:14 AM 编辑
shern91 发表于 2014-1-19 12:00 AM
你的解释很清楚哦,谢谢...比我在学校学的我都不明白...顺便问一下super几时可以用到?是不是在inherit才 ...
  1. class Father
  2. {
  3.         String name;
  4.        
  5.         public Father(String s) //Parent class的constructor
  6.         {
  7.                 name = s;
  8.         }
  9. }

  10. class Son extends Father
  11. {
  12.         int age;
  13.        
  14.         public Son(String s) //Children class的constructor,1個parameter
  15.         {
  16.                 super(s); //呼叫Line 5的parent的constructor
  17.         }
  18.        
  19.         public Son(String s, int n) //Children的constructor,2個parameters
  20.         {
  21.                 this(s); //呼叫Line 15的自己這個class的constructor
  22.                 age = n;
  23.         }
  24. }
复制代码
簡單來說,super()是呼叫parent class的constructor,而this()是呼叫自己這個class的constructor
要注意的是,要在別的constructor裡面用super()跟this()的話,一定要放在constructor裡面的第一排
作者: shern91    时间: 2014-1-19 12:16 AM
提示: 作者被禁止或删除 内容自动屏蔽
作者: slay_alex92    时间: 2014-1-19 02:11 AM
shern91 发表于 2014-1-19 12:04 AM
谢谢你...你现在的工作是关于programmer的吗?还是已经转行了?

我還是學生喔~
可是我不是學IT的
我在讀medicine
只是對programming很有興趣XDD
就自己買書來學哈哈
作者: shern91    时间: 2014-1-20 11:46 PM
提示: 作者被禁止或删除 内容自动屏蔽
作者: slay_alex92    时间: 2014-1-24 01:29 AM
shern91 发表于 2014-1-20 11:46 PM
你这种毅力很难得...读medicine都会这样努力来学programming,我读着programming都没那么勤劳

不會啦你過獎了~
我也還在學
一起加油吧
作者: shern91    时间: 2014-1-26 10:21 PM
提示: 作者被禁止或删除 内容自动屏蔽
作者: slay_alex92    时间: 2014-1-27 01:43 AM
shern91 发表于 2014-1-26 10:21 PM
有学web吗?

沒有耶XDD
作者: shern91    时间: 2014-1-27 11:01 PM
提示: 作者被禁止或删除 内容自动屏蔽




欢迎光临 JBTALKS.CC (https://jbtalks.my/) Powered by Discuz! X2.5