一篇文章带你弄懂final关键字的相关知识
后台回复“Java”即可获赠Java学习资料
前面几篇文章用Java带大家一起了解Java的部分基础知识,感兴趣的小伙伴们可以去学习下了,一篇文章带你了解Java类的设计和封装及类成员的访问控制、一篇文章带你了解this关键字和单例模式、Java基础入门篇——面向对象和类的定义,这篇文章带大家一起学习下final关键字。
一、final关键字
1.如果一个类被final修饰符所修饰,表示该类不可能有子类,这样的类就叫做最终类。final关键字可以修饰类、变量、方法。
2.final关键字修饰类、修饰方法、修饰变量的特点
final关键字修饰类:不能被别的类继承;
final关键字修饰方法:方法也不能被覆盖,也就是方法不能被继承的子类重写;
final关键字修饰变量:成员变量、局部变量是常量,仅一次赋值。
二、final关键字修饰类
1.当类被final关键字修饰,表示这个类是不能被继承的。
2.final关键字修饰类例子
//定义Fruit类
final class Fruit{
//info()方法
public void info(){
System.out.print("fruit");
}
}
//定义Cherry继承Fruit类
class Cherry extends Fruit{
//infor()方法
public void info(){
System.out.print("cherry");
}
}
public class p24 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Cherry c=new Cherry();//实例化子类Cherry对象
c.info();//调用info()方法
}
}
输出的结果是:
从上面的编译结果可以看出是错误的,因为final关键字修饰Fruit类,当Cherry类继承Fruit类时,编译出现了“Unresolved compilation problem: The type Cherry cannot subclass the final class Fruit”表示Cherry类型不能将final类水果子类化,所以final修饰的类是不能被别的类继承的。
三、final关键字修饰方法
1.final关键字修饰方法,表示该类的子类的不可以重写方法。
2.final关键字修饰方法案例
//定义Fruit类
class Fruit{
//使用final修饰info()方法
public final void info(){
System.out.print("fruit");
}
}
//定义Cherry继承Fruit类
class Cherry extends Fruit{
//重写Fruit类的info()方法
public void info(){
System.out.print("cherry");
}
}
public class p24 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Cherry c=new Cherry();//实例化子类Cherry对象
c.info();//调用info()方法
}
}
3.运行的结果是:
从上面的代码中编译结果是错误的,因为Cherry类重写Fruit类的info()方法,我们可以看到final关键字修饰Fruit类的info()方法,所以final关键字修饰的方法是最终的,子类是不能对这个方法进行重写的。如果父类定义的某个方法,不想让子类重写,就可以使用这个final关键字修饰方法。
四、final关键字修饰变量
1.final关键字修饰变量时,变量就变成常量,也就是一旦被赋值,就不能重新赋值。
2.final关键字修饰成员变量,需要在定义显示指定初始值。
3.final关键字修饰局部变量,可以在定义时指定初始值,也可以不指定初始值。
4.final关键字修饰局部变量的例子
final int i = 3;//第一次赋值
i= 6;//再次赋值
上面代码中会出现编译错误,因为是重新给i赋值,用final关键字修饰int类型变量i,被final关键字修饰的变量为常量,只能被赋值一次,不可以被重新赋值,i是基本数据类型,i的内容是值。
5.final关键字修饰成员变量例子
//定义Fruit类
class Fruit{
final String name;//final关键字修饰name属性
double weight=66;//水果的重量weight属性
//info()方法打印水果信息
public final void info(){
System.out.print("我是一个"+name+"重量为:"+weight+"g!");
}
}
public class p24 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Fruit f=new Fruit();//实例化Fruit对象
f.info();//调用info()方法
}
}
运行的结果是:
从上面的运行结果我们可以看到编译是错误的,因为final关键字修饰的成员变量,在定义的时要给它一个初始值。
五、总结
本文主要介绍了final关键字修饰类、final关键字修饰方法、final关键字修饰变量。
final关键字修饰类说明了是不能被别的类继承的。final关键字修饰方法表示该类的子类的方法是不可以被重写的。
final关键字修饰变量时,成员变量、局部变量是常量,仅一次赋值。final关键字修饰类、方法、变量也通过案例帮助理解。
希望大家通过本文的学习,对你有所帮助!
------------------- End -------------------
往期精彩文章推荐:
一篇文章带你了解Java继承那些事儿
一篇文章教会你使用Java中的super关键字基本用法
一篇文章带你了解Java中的static关键字和静态变量、静态方法
一篇文章带你了解Java类的设计和封装及类成员的访问控制
欢迎大家点赞,留言,转发,转载,感谢大家的相伴与支持
想加入Java学习群请在后台回复【入群】
万水千山总是情,点个【在看】行不行