作者k43582 (crab)
看板java
标题Re: [问题] static class 的相关概念
时间Sun Mar 13 11:50:03 2011
※ 引述《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
1F:→ tkcn:6 不太对。 4&6 建议去看书上有关 inner class 的部份 03/13 11:58
2F:→ k43582:所以1-5都对吗? 谢谢 03/13 13:14
3F:→ tkcn:对 03/13 13:52
4F:推 guest0710:恕小弟借这篇来询问一个这周思考中的问题.. 03/13 13:53
5F:→ guest0710:String类是无法被继承的 如果我想尝试类似NullObject 03/13 13:55
6F:→ guest0710:的方式来减轻时常检查字串是否null的压力 是否可行 03/13 13:58
7F:→ guest0710:烦请指点後学一二.. 03/13 13:59
8F:推 Reder:要减轻压力用 StringUtils.isNotBlank() 之类的 method 吧 03/13 14:21
9F:→ asilzheng:第1点 你要先了解static和abstract这两个修饰词的差别 03/13 15:03
10F:→ asilzheng:第2点 建议使用class名称呼叫 这样更容易被辨别 03/13 15:05
11F:→ tkcn:我觉得 String 还是自己乖乖检查 null 吧, 03/13 21:50
12F:→ tkcn:话说 Null-safe 也从 Java 7 的 feature list 拿掉了 03/13 21:52