final

Posted xiaolige

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了final相关的知识,希望对你有一定的参考价值。

 final修饰符:
 最终的意思,不能改变
 * final修饰类不可以被继承,但是可以继承其他类。(太监类)
 * 使用方式没有变化,可以继承其他的类,也可以实现其他接口,也可以创建对象,调用类中的方法
 * 被final修饰的Fu类,子类不能继承


 * final修饰的方法,是一个最终方法,不能改变
 * final修饰的方法可以被继承,不可以被重写,但父类中没有被final修饰的方法,子类重写后可以加final修饰。

/*
   * 可以使用final修饰局变量:称之为常量-->一次赋值,终身不变
   * final也是局部变量唯一的修饰符
   */
  //final修饰基本数据类型变量
  final int a = 100;//固定住变量的值,值不能改变
  //a = 20;//The final local variable a cannot be assigned. 
  
  /*
   * final修饰引用数据类型变量:固定住变量的地址值,地址值不能改变
   * 引用数据类型变量赋值赋的值对象的堆内存中的地址值
   */
  final Person p = new Person("颜如玉", 18);//0xda6bf4
  //p = new Person("黄金屋", 20);//0x222 -->The final local variable p cannot be assigned. 
  //p = null;//The final local variable p cannot be assigned. 
  System.out.println(p);//[email protected]
  /*
   * 引用类型变量的属性是可以变化的,不会改变地址值
   */
  p.setName("黄金屋");
  p.setAge(20);
  System.out.println(p);//[email protected]
  System.out.println(p.getName()+"..."+p.getAge());

 * final修饰成员变量:必须在创建对象前赋值(构造方法执行完毕之前)
 * 成员变量堆内存中的默认值,不是final修饰的成员变量的值
 * 赋值方式:
 * 1.直接赋值
 * 2.使用构造代码块赋值,优选于构造方法执行
 * 3.使用构造方法赋值
 * 注意:final修饰的变量,是一个常量,只能赋值一次
//1.直接赋值
 final int a = 10;
 final int b;
 final int c;
 //构造代码块
 {
  //2.使用构造代码块赋值,优选于构造方法执行
  b = 20;
 }
 public Student() {
  //3.使用构造方法赋值
  c = 30;
 }

















以上是关于final的主要内容,如果未能解决你的问题,请参考以下文章

finalfinally与finalize的区别

finalfinally与finalize的区别

浅析finalfinally和finalize之间的区分

finalfinalize 和 finally 的不同之处

Java面试题之finalfinally和finalize的区别

看完这篇 finalfinally 和 finalize 和面试官扯皮就没问题了