黑马程序员技术交流社区

标题: final关键字 [打印本页]

作者: 曹昌豪    时间: 2012-6-1 16:52
标题: final关键字
final含义是不可变的,修饰的成员不可以改变,可以理解,修饰的方法不可以被重写,修饰的类不可以被继承,怎么解释的啊
作者: 王章亚    时间: 2012-6-1 18:09
本来,final就有最终的意思,不要去纠结这样的问题,没意思!记住就行啦
作者: 程旦    时间: 2012-6-1 18:33
就是说被final修饰的类 不能做别人的父类就是哦
作者: 张洁    时间: 2012-6-1 18:55
被final修饰的方法不可以被重写,被final修饰的类不可以被继承,这在java中就是这样规定的,应该没有什么原因吧!
lz如果不理解的话,可以这样想,就是如果你不希望子类重写父类的某个方法的话,就用final来修饰这个方法
作者: 凡延海    时间: 2012-6-1 19:10
这个就是硬性规定的吧,记住就可以了:
final修饰变量。表示变量不可被再赋值变成了常量。
final修饰方法,表示方法不可被重写了。
final修饰类,表示类不可被继承了。


作者: 杨海波    时间: 2012-6-1 19:11
final表示最终的意思,它修饰的类是不能被继承的;final修饰的方法能被继承(Math类里就有),但是不能够被重写。其实关系并不复杂,你只需要记住这样一句话:final可用于声明属性、方法和类,分别表示属性不可变,方法不可重写,类不可继承。当然final修饰的方法是可以被重载的

作者: 涂金哲    时间: 2012-6-3 11:20
final修饰基本数据:在java中,编译器有时需要将某些常量用于许多计算表达式,在编译期完成计算,可以将常量用final关键字修饰并在定义时赋值并且标志符大写。如:final static double PI=3.1415926。 final修饰对象引用时,表示引用被初始化指向某个对象后,就无法再使其指向另一个对象。如:
class Student{     int age;    
 public Student(int age){this.age=age;}  }
public class ShowAge{  private String age;  
  private static final Student st=new Student(20);  
  public ShowAge(String age){     this.age=age;    }  
  public static void main (String[] args){       ShowAge sA=new ShowAge("age");    
 sA.st=new Student(21); //错误提示:The final field ShowAge.st cannot be assigned  
   }    }  
final作为参数格式:f(final int i){};此时表示可以读参数不能修改,可用来向匿名内部类传递数据。 final方法:锁定方法,防止继承类修改。 final类:当类不需要被继承时,定义时加final关键字即可实现 final class A{} class B extends A{}  //会出现错误提示




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2