作者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/cn.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