浅谈Java之终止继承:Final类和Fianl方法
作者:baby的我 发布时间:2023-02-14 00:07:08
标签:Java,Final,终止继承
前言
关键字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 stub
Son 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方法详解整合网站的支持!
来源:https://blog.csdn.net/qq_41431457/article/details/85926573


猜你喜欢
- 1、什么是ThreadLocal变量ThreadLoal 变量,线程局部变量,同一个 ThreadLocal 所包含的对象,在不同的 Thr
- 软硬件环境Macbook Pro MGX 72Android studio 2.1.2Android 5.1.1前言上一篇介绍了如何获取et
- itextpdf解决PDF合并的问题本文章是我在项目开发过程中解决了一个关于PDF显示的需求而记录的。需求是这样的,需要将两个PDF进行合并
- 对于无.SVC文件的配置只需要指定以.svc结尾的相对地址和服务实现的完整名称即可。可问题恰恰出在这里,之前需要在<system.se
- 一、下载步骤首先明确自己的操作系统下载地址:点击跳转进入界面后我们可以看到有ultimate版本(收费)和community版本(免费),学
- 一、Feign简介Feign是netflix开发的声明式、模板化的http客户端,在使用时就像调用本地(服务消费者自己)的方法一般,帮助我们
- 本文实例讲述了Android编程实现状态保存的方法。分享给大家供大家参考,具体如下:1、当我们正在发短信的时候,已经写了几百字了,这时突然来
- 一、前言 做过系统参数设置的同学们,肯定遇到过要提供一系列具有相同特点的选项供用户选择。
- 1、检测权限因为dump系统lsass内存和sam注册表需要管理员权限,所以首先需要对当前进程上下文权限做判断。public static
- XML的主要用途--数据存储和数据描述--是一个优良的配置文件--相当于一个小型数据库--XML不依赖于任何一种编程语言,是独立的W3C提供
- 有时候,我们需要制作一个Word模板文档,然后发给用户填写,但我们希望用户只能在指定位置填写内容,其他内容不允许编辑和修改。这时候我们就可以
- 一、基本RPC框架简介在分布式计算中,远程过程调用(Remote Procedure Call,缩写 RPC)允许运行于一台计算机的程序调用
- WrapPanel 实现虚拟化1.框架使用大于等于.NET40;2.Visual Studio 2022;3.项目使用 MIT&n
- 面试官Q1:请问String s = new String("xyz");产生了几个对象?对于这个Java面试题,老套路
- springboot引入外部yml配置文件当需要在springboot中引用其他的yml文件时,需要在application.yml里配置s
- service是业务层 action层即作为控制器DAO (Data Access Object) 数据访问1.JAVA中Action层,
- 一、基本概念(重要)Integer 是 int 的包装类,int 则是 java 的一种基本数据类型;Integer 变量必须实例化后才能使
- 下面对Java反射的基础知识进行说明和总结:首先定义一个MyBase类,其中有私有字段,也有公有字段。同时也有公有方法和私有方法。MyBas
- 本文实例讲述了Android开发实现Launcher3应用列表修改透明背景的方法。分享给大家供大家参考,具体如下:Launcher时开机完成
- 介绍Java中的享元模式(Flyweight Pattern)是一种结构型设计模式,旨在通过共享尽可能多的对象来减少内存占用和提高性能.Ja