java 板


LINE

※ 引述《henry4343 (henry)》之铭言: : 请问一下各位,关於static method的使用时机为何? : 以下两个例子 : 1. Book.openBook(); : 2. Book book = new Book(); : book.openBook(); : openBook(){ : system.out.println("open book"); : } : 其实作的事情都一样,请问一下什麽情况下会用1,什麽情况下会用2呢 : 对我来说..我想偷懒的时候就会1(少打一点字...) : 但还是希望搞懂这两种方法到底该怎麽使用比较好? : 感谢各位 提供参考一下 我自己是用 人事时地物(或是用4W1H也可以)的原则判别 其实主要是厘清该函式应该归属於何方 例如以你的例子来说 void openBook(){ System.out.println("open book"); } 这个函式 人: 事:只有列印"open book" 时: 地: 物:没有输入也没有输出也没有异动 所以完全没差 以下是我自己定义不同的状况 openBook(){ 开启书本物件并且开始进行初始化 如果档案没有 格式不对 或...则丢出错误 } 事:看起来就有点复杂了 时:应该要乎叫或是使用book物件要第一个呼叫的函式 地:要呼叫的book物件在哪里呢? 物:需要参数来找到书本物件呢?有必要回传吗? 在java之上 大胆假设一下 我认为这个函式所要使用的东东应该是跟这个函式在一起,既然在一起就不用回传什麽啦 因此就是Book里面啦 所以我草草写一下 class Book{ String bookpath; String context; public Book(String bookpath){ this.bookpath=bookpath; } void openBook(){ //我认为书本应该是某个档案 check(bookpath); //读取内容 context=readfromPath(bookpath); //检查内容 checkContext(context); } } class TestBook{ public void testA(){ Book bookA=new Book("/book/book.txt"); bookA.openBook(); } } 在这里我认为openBook是应该在物件范围内的 当然我也可以反之 我现在有一个Book类别,但是根据某种理由(因为我爽) 所以我不希望别人可以任意去new Book但是我又要提供Book物件给人家 然後我又懒得写 所以我想(因为什麽都是我想就对啦-->需求) 提供一个叫openBook的函式给人家就好啦 事:建构一个Book物件 地:.... 物:根据输入的书本路径 回传一个Book物件给人家 Book openBook(String bookpath){ Book book=new Book(bookpath); return book; } 那麽在这里可以发现到所牵扯到的物件似乎都不在openBook的同一个范围 而且看起来也不需要靠某物件就可以运作 则 class BookFactory{ public static Book openBook(String bookpath){ return new Book(bookpath); } } 另外还有concurrence的问题 其实就是在平行运算的环境的问题 也会是 就是编译过 单一测试也过 但多执行绪环境有问题 或有奇怪的bug 原因就是对於static 不当的使用 在此提供参考 -- --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 163.29.29.131
1F:推 joe7226107:推 01/03 23:37







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:WOW站内搜寻

TOP