Re: [問題] static class 的相關概念
※ 引述《tkcn (小安)》之銘言:
: ※ 引述《k43582 (crab)》之銘言:
: : 大家好
: : static概念不太清楚 想問問大家
: : 程式碼&問題=>http://nopaste.csie.org/3927d
: : 希望好心人 幫我一下
: : 謝謝你!!
: 你缺少的觀念有點多,我沒辦法全部在這裡說明,
: 所以先指出你程式註解有錯的部份。
: 1.
: static class Virus {
: //static inner class 因為test要標為static 這個也要 否則不過
: Virus 加不加 static 跟裡頭的 method 是不是 static 完全無關,
: compile 有錯誤是其他原因造成的,去查查有關 inner class 的資料吧。
: 2.
: Virus why = new Virus();
: //為何這樣也可以? static "class"竟然可以建立物件????
: static class 本來就可以建立物件。
: 3.
: why.test();
: //目的要使用static的test 問題:與下面兩行的Math哪裡不同??
: Math.abs(3.4);
: //直接用class名稱用 不准建立物件 而Virus可建立 矛盾??
: static method 允許你用類別或物件去呼叫
: (雖然我不覺得透過物件呼叫有任何好處)
: 4.
: Math a = new Math();
: //出錯 我要呼叫static的abs() 這邊不能建立物件 不懂???
: 錯誤訊息應該會告訴你原因: Math 只有 private Constructor。
首先 非常謝謝各位熱心的回答!!
我在整理一下觀念 麻煩大家過目一下
幫我看看下面列出的觀念是否正確
1.static class 可建立物件 abstract class 才不行
2.static method 你要建立物件去呼叫 或 直接用class名稱呼叫都可以
3.被標示final的class不能被繼承
根據API
String 是 final class 但可以建立物件
Math 也是 final class 但卻不能建立物件
原因是 API 中 Math 沒列出 Constructor
=> 所以API沒列出Constructor的class 都代表其Constructor是Private ?
4.不懂寫成static class的好處?
5.在這個當中 http://nopaste.csie.org/4b745 (有error)
因為B不是inner class 所以不準加static
ie static class只准出現在inner class中?
6.回答你的第1點
"Virus 加不加 static 跟裡頭的 method 是不是 static 完全無關,
compile 有錯誤是其他原因造成的,去查查有關 inner class 的資料吧。"
我把Virus 的static 去除 它給我兩個改正的選項
(1) 把Virus加上static
(2) 把test()的static也去除
也就是要同時有staic 或 同時沒有 概念對嗎?
再次感謝你!! 有點多 不好意思 麻煩了 謝謝你!!!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.35.155.253
→
03/13 11:58, , 1F
03/13 11:58, 1F
→
03/13 13:14, , 2F
03/13 13:14, 2F
→
03/13 13:52, , 3F
03/13 13:52, 3F
推
03/13 13:53, , 4F
03/13 13:53, 4F
→
03/13 13:55, , 5F
03/13 13:55, 5F
→
03/13 13:58, , 6F
03/13 13:58, 6F
→
03/13 13:59, , 7F
03/13 13:59, 7F
推
03/13 14:21, , 8F
03/13 14:21, 8F
→
03/13 15:03, , 9F
03/13 15:03, 9F
→
03/13 15:05, , 10F
03/13 15:05, 10F
→
03/13 21:50, , 11F
03/13 21:50, 11F
→
03/13 21:52, , 12F
03/13 21:52, 12F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 3 篇):