A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王宝龙 中级黑马   /  2012-9-6 14:14  /  1908 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 王宝龙 于 2012-9-9 23:29 编辑
  1. class Person//定义一个Person类
  2. {
  3. private String name;
  4. private int age;
  5. public Person(String name,int age)
  6. {
  7.   this.name=name;
  8.   this.age=age;
  9. }
  10. public void setAge(int a)
  11. {
  12.   age = a;
  13. }
  14. public void SayHello()//定义一个方法
  15. {
  16.   System.out.println("我是"+name+"我的年龄是"+age);//输出姓名和年龄
  17. }
  18. }
  19. class InputDemo
  20. {
  21. public static void main(String [] arge)
  22. {
  23.    final Person a = new Person("zhangsan",18);
  24.   a.setAge(16);
  25.   a.SayHello();
  26. }
  27. }
复制代码
final关键字究竟是
final的引用不能改变
还是final引用的对象里的变量不能改变。
很疑惑!!!!!

评分

参与人数 1技术分 +1 收起 理由
王德升 + 1 赞一个!

查看全部评分

4 个回复

倒序浏览
本帖最后由 武庆东 于 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();

回复 使用道具 举报
final类不能被继承,没有子类,final类中的方法默认是final的。
final方法不能被子类的方法覆盖,但可以被继承。
final成员变量表示常量,只能被赋值一次,赋值后值不再改变。
final不能用于修饰构造方法。
回复 使用道具 举报
final如果修饰对象,对象不是不可改变,只是 变量对对象的引用无法改变。
  1. class InputDemo
  2. {
  3. public static void main(String [] arge)
  4. {
  5.    final Person a = new Person("zhangsan",18);
  6.   a.setAge(16);
  7.   a.SayHello();
  8. }
  9. }

复制代码
假如楼主把下面直接改为 a = new Person("zhangsan",16);
就会报错,因为a对象被final修饰,变量对对象的引用无法改变。

错误为下面图:
楼主看完这个应该就可以明白了吧
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马