前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一篇文章带你弄懂final关键字的相关知识

一篇文章带你弄懂final关键字的相关知识

作者头像
Java进阶者
发布2021-01-22 10:44:19
3410
发布2021-01-22 10:44:19
举报
文章被收录于专栏:Java进阶学习交流

前面几篇文章用Java带大家一起了解Java的部分基础知识,感兴趣的小伙伴们可以去学习下了,一篇文章带你了解Java类的设计和封装及类成员的访问控制一篇文章带你了解this关键字和单例模式Java基础入门篇——面向对象和类的定义,这篇文章带大家一起学习下final关键字。

一、final关键字

1.如果一个类被final修饰符所修饰,表示该类不可能有子类,这样的类就叫做最终类。final关键字可以修饰类、变量、方法。

2.final关键字修饰类、修饰方法、修饰变量的特点

final关键字修饰类:不能被别的类继承;

final关键字修饰方法:方法也不能被覆盖,也就是方法不能被继承的子类重写;

final关键字修饰变量:成员变量、局部变量是常量,仅一次赋值。

二、final关键字修饰类

1.当类被final关键字修饰,表示这个类是不能被继承的。

2.final关键字修饰类例子

代码语言:javascript
复制
//定义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关键字修饰方法案例

代码语言:javascript
复制
//定义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关键字修饰局部变量的例子

代码语言:javascript
复制
final int i = 3;//第一次赋值
i= 6;//再次赋值

上面代码中会出现编译错误,因为是重新给i赋值,用final关键字修饰int类型变量i,被final关键字修饰的变量为常量,只能被赋值一次,不可以被重新赋值,i是基本数据类型,i的内容是值。

5.final关键字修饰成员变量例子

代码语言:javascript
复制
//定义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关键字修饰类、方法、变量也通过案例帮助理解。

希望大家通过本文的学习,对你有所帮助!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-01-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java进阶学习交流 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、final关键字
  • 二、final关键字修饰类
  • 三、final关键字修饰方法
  • 四、final关键字修饰变量
  • 五、总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档