黑马程序员技术交流社区
标题:
关于final关键字
[打印本页]
作者:
yan
时间:
2013-8-10 22:17
标题:
关于final关键字
今天看了下final关键字,有个问题想不明白。
例:
有一个person类,里面有一个成员变量,int x=3;创建了一个person的对象
final person p =new person();
我的问题是,被final修饰的是常量,不可以改变,这个对象被修饰之后,是它的引用是常量不能变,还是它的引用值是常量,不能改变?
作者:
李江
时间:
2013-8-10 22:38
是p所指向的对象不能改变,p内的变量x可变。如代码:
public class Demo
{
public static void main(String[] args)
{
//Person p = new Person();
//p.setX(10);
final Person p = new Person();
//p = new Person();//无法为最终变量p分配值
p.setX(12);
System.out.println(p.getX());
}
}
class Person
{
int x=3;
public void setX(int x)
{
this.x=x;
}
public int getX()
{
return x;
}
}
复制代码
作者:
郭利超
时间:
2013-8-10 22:48
被final 修饰的类不能创建对象了 但是里面的元素随便你弄
作者:
封号了...
时间:
2013-8-13 16:57
final类不能被继承,没有子类,final类中的方法默认是final的。
final方法不能被子类的方法覆盖,但可以被继承。
final成员变量表示常量,只能被赋值一次,赋值后值不再改变。
final不能用于修饰构造方法。
(例外)final对象引用不能指向新对象,但是该对象的内部属性是可以改变的。
就像二元数组,外部数组存放的是内部数组的地址,虽然外部数组的地址值是不能改变的,但是内部数组还是可以重新赋值的。
注意:父类的private成员方法是不能被子类方法覆盖的,因此private类型的方法默认是final类型的。
自己顺便复习了下!
作者:
kmter
时间:
2013-8-13 23:28
郭利超 发表于 2013-8-10 22:48
被final 修饰的类不能创建对象了 但是里面的元素随便你弄
这里final修饰的应该是Person的对象p, 而并非Person类. 这里修饰的是对象的引用p为常量不可变, 而非对象本身
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2