黑马程序员技术交流社区
标题:
final 关键字的问题
[打印本页]
作者:
王宝龙
时间:
2012-9-6 14:14
标题:
final 关键字的问题
本帖最后由 王宝龙 于 2012-9-9 23:29 编辑
class Person//定义一个Person类
{
private String name;
private int age;
public Person(String name,int age)
{
this.name=name;
this.age=age;
}
public void setAge(int a)
{
age = a;
}
public void SayHello()//定义一个方法
{
System.out.println("我是"+name+"我的年龄是"+age);//输出姓名和年龄
}
}
class InputDemo
{
public static void main(String [] arge)
{
final Person a = new Person("zhangsan",18);
a.setAge(16);
a.SayHello();
}
}
复制代码
final关键字究竟是
final的引用不能改变
还是final引用的对象里的变量不能改变。
很疑惑!!!!!
作者:
武庆东
时间:
2012-9-6 14:16
本帖最后由 武庆东 于 2012-9-6 14:26 编辑
final关键字声明类、属性和方法
1、使用final声明的类不能有子类
2、使用final声明的方法不能被子类覆写
3、使用final声明的变量即为常量,常量不可以修改!
final Person a = new Person("zhangsan",18); //在这里a是引用变量,因为使用final修饰,所以final声明的变量为常量,不可以改变
a.setAge(16);
a.SayHello();
作者:
孙岳
时间:
2012-9-6 14:23
final类不能被继承,没有子类,final类中的方法默认是final的。
final方法不能被子类的方法覆盖,但可以被继承。
final成员变量表示常量,只能被赋值一次,赋值后值不再改变。
final不能用于修饰构造方法。
作者:
杨卓儒
时间:
2012-9-6 14:47
final如果修饰对象,对象不是不可改变,只是 变量对对象的引用无法改变。
class InputDemo
{
public static void main(String [] arge)
{
final Person a = new Person("zhangsan",18);
a.setAge(16);
a.SayHello();
}
}
复制代码
假如楼主把下面直接改为 a = new Person("zhangsan",16);
就会报错,因为a对象被final修饰,变量对对象的引用无法改变。
错误为下面图:
test.jpg
(8.16 KB, 下载次数: 39)
下载附件
2012-9-6 14:47 上传
楼主看完这个应该就可以明白了吧
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2