• 前言

关键字Final不仅可以用来修饰变量,而且对类及其方法的继承也有很大的影响,本文将从类与方法两个方面介绍final关键字的功能。


  • Final类

当关键字final用来修饰类时,其含义是该类不能再派生子类,换句话说,任何其他类都不能继承用final修饰的类,即使该类的访问权限为pubilc类型,也不能被继承;否则,将编译报错。

只有当需要确保类中的方法都不被重写时才应该建立最终(final)类,final关键字将会为这些方法提供安全,没有任何人能够重写final类中的方法,因为不能继承。

例:

package chapeter04;final class Father { }public class Sample3_13 extends Father
{public static void main(String[] args){}
}

报错:

可以看出,编译找不到Father类。


  • Final方法

当关键字final修饰方法后,该方法在子类中将无法重写,只能继承,例:

package chapeter04;class Father
{public final void show(){System.out.println("我是final方法,可以被继承,但是不能被重写");}
}class Son extends Father { }public class Sample4_15
{public static void main(String[] args) {// TODO Auto-generated method stubSon s= new Son();s.show();}}

运行结果:

可以看出,代码正常编译运行,final的方法show被成功继承。但是若图将final的方法在子类中重写,将会编译报错:

class Son extends Father
{public void show(){System.out.println("重写Final方法");}
}

可以看出final的方法不能被继承。

要恰当使用final方法,只有在子类覆盖某个方法会带来问题时,再将此方法设置为final方法,一般情况下不必使用。因为防止子类覆盖会丢失一些面向对象的优点,包括通过覆盖实现的可扩展性。

Java之终止继承:Final类和Fianl方法相关推荐

  1. java final类为什么不能继承_浅谈Java之终止继承:Final类和Fianl方法

    前言 关键字Final不仅可以用来修饰变量,而且对类及其方法的继承也有很大的影响,本文将从类与方法两个方面介绍final关键字的功能. Final类 当关键字final用来修饰类时,其含义是该类不能再 ...

  2. Java中常见的final类

    final为Java中常用的关键字,被final修饰的类不可被继承 下面列举几个Java包中的final类(): 1.java.lang包(列举所有final类) 包装类:Boolean,Charac ...

  3. Java中Date和Calender类的使用方法

    查看文章     Java中Date和Calender类的使用方法 2009-10-04 20:49 Date和Calendar是Java类库里提供对时间进行处理的类,由于日期在商业逻辑的应用中占据着 ...

  4. java基础 通过继承Thread类和实现Runnable接口创建线程

    java 创建线程 Java中,线程也是一种对象,但不是任何对象都可以成为线程. 只有实现了Runnable接口或继承了Thread类的对象才能成为线程. 继承Thread类 //格式: class ...

  5. [ 转载 ] Java基础10--关于Object类下所有方法的简单解析

    关于Object类下所有方法的简单解析 类Object是类层次结构的根类,是每一个类的父类,所有的对象包括数组,String,Integer等包装类,所以了解Object是很有必要的,话不多说,我们直 ...

  6. java bufferedread_java中关于bufferedreader类中read方法

    java中关于bufferedreader类中read方法 关注:58  答案:2  mip版 解决时间 2021-01-14 05:40 提问者孤城古巷 2021-01-13 06:28 如下.此时 ...

  7. Java常见面试题—Object 类中的方法

    Object 类中的方法 Object() 默认构造方法 clone() 创建并返回此对象的一个副本. equals(Object obj) 指示某个其他对象是否与此对象"相等". ...

  8. java mybatis enum_mybatis处理枚举类的简单方法

    mybatis自带对枚举的处理类 org.apache.ibatis.type.EnumOrdinalTypeHandler :该类实现了枚举类型和Integer类型的相互转换. 但是给转换仅仅是将对 ...

  9. java outputstream flush_对OutputStream类的flush()方法的误解

    在学习了<文件传输基础--Java IO流> 课程后,发现自己对flush()方法的调用有很多疑惑.在查询资料和自己看源码以及动手试验之后发现有以下几个特点.如有误也请大家指正出来,一切为 ...

最新文章

  1. 山西计算机软考知识点,计算机软考考试必备知识点:数据标准化
  2. [推荐] 创业者要留意优先清算权
  3. c++ 常见问题之string
  4. 2016/3/10 PHP (超文本预处理器) 是什么?
  5. 深入理解Kubelet核心执行框架
  6. Noj-589 --糖果
  7. 使用直线标定板进行相机畸变校正,并且进行9点标定(halcon)
  8. linux shell运行脚本命令行参数,shell脚本命令行参数简介
  9. 深入了解C++变量类型有哪些
  10. redhat 复制文件夹及子文件夹_Docker COPY 复制文件夹的诡异行为
  11. HDU 1021 Fibonacci Again
  12. yum 安装、 rpm安装、 源码编译安装
  13. 模仿人人网客户端应用源码
  14. 小程序转发二维码携带参数不生效的问题
  15. Linux 4.10中两个新特性与我的一段故事
  16. BUAA OO 第三单元 规格化设计
  17. 快速搞懂Lombok使用与原理
  18. 管理学总论之新古典管理理论和现代管理理论
  19. Symbian 进行最后一次系统升级,塞班时代结束
  20. android 8.0 一加5,一加5如何升级安卓8.0 一加5升级安卓8.0图文教程

热门文章

  1. 使用Gradle构建变体
  2. Flink Connectors之消费Kafka数据相关参数以及API说明
  3. Flink 系例 之 Connectors 连接 Kafka
  4. 解决问题:ORA-01846--周中的日无效
  5. 紫光展锐春藤8908A NB-IoT芯片获得德国电信全球认证
  6. 识别文字什么软件?这几个实用的文字识别软件值得收藏
  7. java 导出excel添加水印
  8. Xilinx FPGA 使用Microblaze实现串口命令行
  9. 计算机中国教育部排名,2019全国高校排行榜_全国高校专业排名哪家强 教育部发布权威榜单...
  10. yorc.json_天若ocr文字识别工具软件