浅谈Java之终止继承:Final类和Fianl方法

 更新时间:2019年03月14日 09:54:16   作者:baby的我  
这篇文章主要介绍了Java之终止继承:Final类和Fianl方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

前言

关键字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方法详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • Java8中List转Map(Collectors.toMap) 的技巧分享

    Java8中List转Map(Collectors.toMap) 的技巧分享

    在最近的工作开发之中,慢慢习惯了很多Java8中的Stream的用法,很方便而且也可以并行的去执行这个流,这篇文章主要给大家介绍了关于Java8中List转Map(Collectors.toMap) 的相关资料,需要的朋友可以参考下
    2021-07-07
  • Java使用集合实现斗地主分牌完整代码

    Java使用集合实现斗地主分牌完整代码

    在斗地主游戏中,通常是将一副牌平均分成3份,每份17张牌,并留3张底牌,我们可以使用集合来实现这一功能,这篇文章主要给大家介绍了关于Java使用集合实现斗地主分牌的相关资料,需要的朋友可以参考下
    2024-05-05
  • Java之Pattern.compile函数用法详解

    Java之Pattern.compile函数用法详解

    这篇文章主要介绍了Java之Pattern.compile函数用法详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08
  • Java中的@PreAuthorize注解源码解析

    Java中的@PreAuthorize注解源码解析

    这篇文章主要介绍了Java中的@PreAuthorize注解源码解析,@PreAuthorize注解会在方法执行前进行权限验证,支持Spring EL表达式,它是基于方法注解的权限解决方案,需要的朋友可以参考下
    2023-10-10
  • 分享Spring的下载组件

    分享Spring的下载组件

    这篇文章主要为大家分享了Spring的下载组件,感兴趣的小伙伴们可以参考一下
    2016-05-05
  • 关于post请求内容无法重复获取的解决方法

    关于post请求内容无法重复获取的解决方法

    这篇文章主要介绍了关于post请求内容无法重复获取的解决方法,文中通过代码示例给大家介绍的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-03-03
  • 使用Runtime 调用Process.waitfor导致的阻塞问题

    使用Runtime 调用Process.waitfor导致的阻塞问题

    这篇文章主要介绍了使用Runtime 调用Process.waitfor导致的阻塞问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • SpringBoot 如何根据不同profile选择不同配置

    SpringBoot 如何根据不同profile选择不同配置

    这篇文章主要介绍了SpringBoot 如何根据不同profile选择不同配置的操作方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • Java实现文件分片上传接口的示例代码

    Java实现文件分片上传接口的示例代码

    这篇文章主要为大家详细介绍了如何利用Java语言实现文件分片上传的功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起了解一下
    2022-07-07
  • SpringBoot读取外部配置文件的方法

    SpringBoot读取外部配置文件的方法

    这篇文章主要介绍了SpringBoot读取外部配置文件的方法,以端口配置为例,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-02-02

最新评论