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);//cn.itcast.demo08.Person@da6bf4
  /*
   * 引用类型变量的属性是可以变化的,不会改变地址值
   */
  p.setName("黄金屋");
  p.setAge(20);
  System.out.println(p);//cn.itcast.demo08.Person@da6bf4
  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;
 }
 
 

<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">





posted @ 2018-08-20 23:12  JokerZM  阅读(192)  评论(0编辑  收藏  举报