作者cha122977 (CHA)
看板java
标题Re: [问题] static method使用时机?
时间Sun Jan 5 03:05:57 2014
※ 引述《henry4343 (henry)》之铭言:
: 请问一下各位,关於static method的使用时机为何?
: 以下两个例子
: 1. Book.openBook();
: 2. Book book = new Book();
: book.openBook();
: openBook(){
: system.out.println("open book");
: }
: 其实作的事情都一样,请问一下什麽情况下会用1,什麽情况下会用2呢
: 对我来说..我想偷懒的时候就会1(少打一点字...)
: 但还是希望搞懂这两种方法到底该怎麽使用比较好?
: 感谢各位
提供一下自己的使用原则
基本上static function最重要的就是能在没有class instance的状态下直接使用
所以要不要宣告为static function必需考虑这个function的用途
以例子中的openBook()来说 我建议用1
毕竟做的事和class instance无关
而且特别new一个instance出来还要多花memory呢...
另外基於readable的原则来说的话,用2会让看code的人confuse
"为什麽这个function要new一个instance才能用呢?
是不是这个function运作的结果和instance的状态有关?"
(然而事实上根本毫无关系)
所以我的建议是 如果该function和instance本身无关 就用static function
反之会和该class的instance有关系的,就不要宣告为static
从语义上来说,"static"是静态的意思
可以想成若传入的参数(如果有)都一样的话,不论怎样call该function结果应该都一样
所以这个function的运作和class instance是无关的。
而既然无关又何必要有instance才能call这个function呢?
所以static function就可以直接呼叫喽
(当然你要用instance去call static function也没有语法上的问题就是了)
(另外,因为static function可以直接呼叫,
所以该function若有用到变数或function也必需是static才行
否则会有unknown value的问题)
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 111.243.113.252