作者kiwistar (奇奇)
看板java
標題[問題] static inner class
時間Sat Oct 14 04:04:26 2017
之前寫一些程式的時候,碰到需要獨立出一個類別的東西
往往都獨立初放在另一個檔案,放在同一個package裡面
這次把這些slave class移放到主要的class裡面變成inner class
就碰到了這個問題:
inner class到底要不要宣告為static
google一番後大致有了個了解
知道static與nonstatic inner class在使用外部class成員資格上的限制
以及本身可以創建的變數種類等等
但我還是有點困惑
主要是因為以前學static variable, method的時候
我們都知道static variable, method是在整個主程式底下只會有一份的
也就是不會因為所屬的class instance不同而改變
最常舉的例子就是圓周率
但static class就讓我有點困惑的是
雖然他是靜態的,但是可以instantiated
這個static是不是和variable以及method的static不太一樣?
--
● 日本的驕傲 乒乓球放在上面也不會滾 * 中華民國 很屌嗎,我們台灣
動,馬路就是這麼平! 的驕傲 也可以。
\● / ● /
︱>
#1FPWIVQQ (joke) <︱>
● /\ ▄▃▂▄ ▂▄●▃ /\▂▃
███████████████ψ FallRed ██████████████
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.193.233.18
※ 文章網址: https://webptt.com/m.aspx?n=bbs/java/M.1507925102.A.DFE.html
1F:推 adrianshum: 意思上不太一樣。簡單一句,inner class 能static 就s 10/14 07:08
2F:→ adrianshum: tatic 10/14 07:08
3F:→ ssccg: static/nonstatic inner class的最大差別是在nonstatic 10/14 10:05
4F:→ ssccg: inner class的instance一定要綁定一個外層class的instance 10/14 10:05
5F:→ ssccg: 使用外部成員的限制只是因為這點造成的自然結果 10/14 10:06
6F:→ ssccg: 這跟nonstatic method裡有this可以用一樣,nonstatic inner 10/14 10:16
7F:→ ssccg: class中可使用outer class的this,但相對的new的時候要先有 10/14 10:18
8F:→ ssccg: outer class的instance,所以是從outer class變數(或this) 10/14 10:20
9F:→ ssccg: 後面加上new 10/14 10:21
10F:→ ssccg: 而static inner class除了存取權(跟outer class互相都能存 10/14 10:21
11F:→ ssccg: 取到private層級)外,就是個獨立class,instance間沒有關係 10/14 10:23
12F:→ ssccg: 兩者共通的用途是class本身可以設成private/protected 10/14 10:27
13F:→ ssccg: 控制要不要讓其他class用而已 10/14 10:27
14F:→ kiwistar: 感謝s大,所以說static inner class和獨立class差不多只 10/14 11:22
15F:→ kiwistar: 差在static還可以取用outer class的private content, 獨 10/14 11:22
16F:→ kiwistar: 立則不行,是嗎? 10/14 11:22
17F:推 Killercat: 其實只有一個原則「任何用不到上層class的inner class 10/16 13:27
18F:→ Killercat: 都該宣告為static」如此而已 10/16 13:27
19F:→ Killercat: 除非你把它當作參數傳進來 10/16 13:28