作者cyberwizard (Gavin)
看板java
标题Re: [问题] 建构子问题
时间Thu Mar 15 17:18:49 2012
※ 引述《jodo1984 (XDDD)》之铭言:
: 这样子的话是表示如果要使用到 instance_count 一定要透过 something()
讲得精确一点,只有something 这个class 的成员能存取
: 如果宣告 static int instance_count 是代表
: class something {
: static int instance_count = 0;
: public a() {}
: public b() {}
: }
: a() 和 b() 都可以使用到instance_count, 而且运算过的值不会是正确的
不管是 private static int instance_count = 0;
或是 static int instance_count = 0;
a() 和 b() 皆可以对instance_count存取,无所谓正不正确
: 因为b()使用到个instance_count有可能是a()运算过後的结果..
: 如果宣告int instance_count, a() b()读到的值都是初始化过的
: 是这样吗?
宣告为 int instance_count 表示为物件变数,里面的值跟着物件走,
不同物件间相同变数互相独立
: 另外还有另个问题 内部是否有隐藏一个 this.instance_count = instance_count;
没有
使用this通常表示你要存取的对象为物件变数,
当你宣告static int instance_count後,虽然this.instance_count可存取到类别变数
但是容易误解为还有另一物件变数 instance_count存在
尤其是有变数遮蔽效应存在时
类别变数习惯上透过 "类别名称.类别变数" 方式存取
务必养成良好的程式撰写习惯
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.123.85.140
1F:推 PsMonkey:可是你之前说,只要知道自己在干麽就好...... Orz 03/16 11:24
2F:→ cyberwizard:就怕你误以为自己知道阿 XD 03/16 12:35
3F:→ cyberwizard:变数遮蔽其实还蛮容易发生的,如果变数命名遵守规则. 03/16 12:37
4F:推 AI3767:虽然自己知道在做啥,但良好的习惯和规则有助程式撰写与维护 03/16 13:35