Java基础知识——final关键字

来源:互联网 发布:js的截取方法 编辑:程序博客网 时间:2024/05/20 13:13
final 除了修饰常量,在java中还有4种
1、 final 关键字修饰属性
基本数据型:表示属性的值不能改变,是常量。
引用数据类型:表示对象不能改变。对象的值可以变。

必须初始化:1、声明的同时初始化 2、构造方法中初始化。

class Person{String name;int age;Person(){}Person(String name,int age){this.name=name;this.age=age;} public void showInfo(){  System.out.println("姓名:"+this.name+" ,年龄"+this.age);;  }}class FinalDemo{final int NUM=100;//声明的同时初始化,且常量都大写。final int CALL;final Person p;FinalDemo(){this.CALL=50;//构造方法中初始化。this.p=new Person("张三丰",20);}  public static void main(String args){  FinalDemo f=new FinalDemo();  f.NUM=50;//错误,final修饰的不能改变。  f.p.name="张无忌";  //对的,改变对象的值,对象没变  f.p.showInfo();  f.p=new Person("郭美美",21)//这个是错误的,改变了指向的对象  } }2、 final 关键字修饰方法表示方法不能被重写。子类中不能重写了。public class Animal{  public final void sleep()//final 修饰方法,方法不能被引用{  System.out.println("动物子啊睡觉...ZZZ");  }}class Fish extends Animal{/*不能被重写   public final void sleep(){    System.out.println("鱼在水里睡觉...ZZZ");   }   */   public static void main(String[] args){   }}3、 final 关键字修饰类不能被继承,是最终类。哪些类用作final类的。写的类稳定,完善,不需要扩展的时候可以final。public final class Animal //final修饰类,该类不能继承。{  public final void sleep(){  System.out.println("动物子啊睡觉...ZZZ");  }}class Fish extends Animal //不能继承Animal类{   public static void main(String[] args){   }}4、 final 关键字修饰形参基本数据类型:值不能改变引用数据类型:对象的值能改变,但对象不能改变class Person{String name;int age;Person(){}Person(String name,int age){this.name=name;this.age=age;} public void showInfo(){  System.out.println("姓名:"+this.name+" ,年龄"+this.age);;  }}class FinalDemo{final int NUM=100;//声明的同时初始化,且常量都大写。final int CALL;final Person p;FinalDemo(){this.CALL=50;//构造方法中初始化。this.p=new Person("张三丰",20);}public void change(final Person p){p.name="范师兄";//p=new Person("张三丰",20);p对象不能重新赋值,即对象不可以改变。//对象的值可以改变。}  public static void main(String args){  FinalDemo f=new FinalDemo();  Person p=new Person("张飞",23);  f.chang(p);  p.showInfo();  } }


0 0