面向对象编程(十二)——final关键字

final关键字

Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类、非抽象类成员方法和变量。

在Java中,final关键字可以用来修饰类、方法和变量(包括成员变量和局部变量)。

final修饰变量

  • final修饰变量:该变量变成常量

对于一个final变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象。

上面的一段代码中,对变量i和obj的重新赋值都报错了。

final修饰方法

  • final修饰方法:该方法不能被子类重写,但可以被重载!

 如果一个类不允许其子类覆盖某个方法,则可以把这个方法声明为final方法。 
使用final方法的原因有二: 
    第一、把方法锁定,防止任何继承类修改它的意义和实现。 
    第二、高效。编译器在遇到调用final方法时候会转入内嵌机制,大大提高执行效率。

final修饰类

  • final修饰类:final修饰类则说明:这个类不能被继承!不能有子类。比如:String,Math.

Math类:

 

String类:

当用final修饰一个类时,表明这个类不能被继承。也就是说,如果一个类你永远不会让他被继承,就可以用final进行修饰。final类中的成员变量可以根据需要设为final,但是要注意final类中的所有成员方法都会被隐式地指定为final方法。

在使用final修饰类的时候,要注意谨慎选择,除非这个类真的在以后不会用来继承或者出于安全的考虑,尽量不要将类设计为final类。

Final && Static 

static和final一块用表示什么 ?
static final用来修饰成员变量和成员方法,可简单理解为“全局常量”! 
对于变量,表示一旦给值就不可修改,并且通过类名可以访问。 
对于方法,表示不可覆盖,并且可以通过类名直接访问。

总结

JAVA中final 与 static 总结
 finalstatic
修饰类该类不可被继承只能修饰内部类,该类不需要new,是静态加载(嵌套顶层类)
修饰接口××
修饰构造函数××
修饰语句块×虚拟机按声明顺序初始化static成员字段和static语句块
修饰字段属性表示属性初始化后不能修改(实例常量)是类变量,所有实例共享该变量值(类变量)
在定义时或构造函数中赋值(每个实例拥有一份拷贝)
修饰方法该方法不能被覆盖(只可继承)是类方法,所有实例共享该方法(类方法)
修饰函数参数参数值不能被函数修改×
修饰函数局部变量局部变量初始化后不能修改(局部常量)×
   
用途1).为了防止方法被覆盖或改写;1).定义全局变量或常量;
2).提高运行效率,JAVA对final方法调用采用内嵌机制;2).定义类方法;
二、JAVA类加载顺序
JAVA类加载顺序:1).按代码顺序递归加载静态成员/代码块,先父类再本类;
 2).按代码顺序递归加载非静态成员/代码块,先父类再本类;
 3).按代码顺序递归调用构造函数,先父类再本类;
  
JAVA类加载时机:1).调用静态成员时,加载静态成员所在的类及父类;
 2).第一次new对象时加载(第二次new不再加载)
 3).加载子类会先加载父类.有static和final修饰的成员不会被加载;当成常量使用;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

参考文章:

面向对象编程(七)——Static关键字

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值