static 和 final 怎么理解?
private 修饰 static 怎么理解?
能不能给以通俗一点的解释和例子? 谢谢
1
BOYPT 2016-03-01 16:40:38 +08:00 1
static 是指这个成员在内存中的位置固定,不管初始化多少个实例对象,这个成员都共同使用一处内存;
final 是指不能在继承的类里面改变这个成员; private 修饰 static 就是说这个静态成员是 private 的只能在内部方法访问。 |
2
zerowxxyf 2016-03-01 16:42:34 +08:00
private 是访问权限限定, static 表示不要实例化就可以使用, final 表示不可变的。合在一起大概就是私有全局常量的意思。
|
3
anonymoustian OP @BOYPT 那 private static 是不是只能类里的静态方法访问
|
4
BOYPT 2016-03-01 17:04:34 +08:00
|
5
araraloren 2016-03-01 17:13:33 +08:00 1
限定了 static, 对于对象全局就存在一个这个对象;对于方法就不再属于任何对象了,而是属于这个类
|
6
SoloCompany 2016-03-01 21:01:05 +08:00 1
private 是访问权限(可见范围)关键字,限制只能在类以及外部类( enclosing class )中才可以访问
static 是因为 java 世界只有类(不能直接定义变量或者方法)才产生的 所以你只要把 static 简单理解为全局变量 /全局方法就可以了,如果没有访问权限这种东西, static 的变量或者方法无论移动到什么地方效果都是完全等价的 static 还有另一种用法,就是用来修饰内部类( inner class ),表示这个内部类不拥有外部类( enclosing class )的指针,也就是说,它完全是一个独立的类,忽略访问权限,抽取为独立的类或者移动到任意一个别的外部类里面效果都是完全等价的 final 关键字用来修饰变量 /方法 /类的含义不完全相同,修饰变量就表示变量只能一次赋值然后禁止修改(如果是引用则只限制引用本身不可变,但引用的内容是可变的),修饰方法或类则表示禁止多态(不允许 override 一个方法 / 不允许继承一个类) 结合以上几点可推导, private 方法必然是 final 的,因此不要画蛇添足的给 private 方法添加 final 关键字,虽然语法上允许 |
7
SoloCompany 2016-03-01 21:04:20 +08:00 1
static 因为是全局的,因而也不存在多态,因此方法也不适合用 static final 来修饰,只应保留关键的 static 关键字,就已经隐含 final 了
|