Java中final与继承操作实例分析

 更新时间:2019年09月18日 09:53:01   作者:cakincqm  
这篇文章主要介绍了Java中final与继承操作,结合实例形式分析了Java中使用final阻止继承的相关原理与操作注意事项,需要的朋友可以参考下

本文实例讲述了Java中final与继承操作。分享给大家供大家参考,具体如下:

一 点睛

final在Java中被称为终结器。

1 在基类的某个方法加了final,那么在子类中该方法被禁止二次“改造”。

2 通过在类的前面添加final关键字,便可以阻止基类被继承。

二 实战1——final标记的方法不能被子类覆写实例

1 代码

class Person
{
  // 此方法声明为final不能被子类覆写
  final public String talk()
  {
   return "Person:talk()" ;
  }
}
class Student extends Person
{
  public String talk()
  {
   return "Student:talk()" ;
  }
}
public class TestFinalDemo
{
   public static void main(String args[])
   {
      Person S1 = new Student();
      System.out.println(S1.talk());
   }
}

2 运行

3 说明

运行时发生了A JNI has occured错误,这里JNI指的是“Java Native interface(Java 本机接口)”。

三 实战2——用final继承的限制

1 代码

//定义被final修饰的父类
final class SuperClass
{
  String name;
  int age;
}
//子类SubClass继承SuperClass
class SubClass extends SuperClass
{
  //do something
}
public class InheritRestrict
{
  public static void main(String[] args)
  {
    SubClass subClass = new SubClass();
  }
}

2 运行

Exception in thread "main" java.lang.Error: Unresolved  compilation problem:
     The type SubClass cannot subclass the final class  SuperClass
     at SubClass.<init>(InheritRestrict.java:18)
     at InheritRestrict.main(InheritRestrict.java:26)

更多java相关内容感兴趣的读者可查看本站专题:《Java面向对象程序设计入门与进阶教程》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总

希望本文所述对大家java程序设计有所帮助。

相关文章

  • 深入学习java内存化和函数式协同

    深入学习java内存化和函数式协同

    这篇文章主要介绍了深入学习java内存化和函数式协同,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,,需要的朋友可以参考下
    2019-06-06
  • SpringBoot 自定义+动态切换数据源教程

    SpringBoot 自定义+动态切换数据源教程

    这篇文章主要介绍了SpringBoot 自定义+动态切换数据源教程,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • SpringBoot + openFeign实现远程接口调用的过程

    SpringBoot + openFeign实现远程接口调用的过程

    现在的微服务项目不少都使用的是springboot+spring cloud构建的项目,微服务之间的调用都离不开feign来进行远程调用,这篇文章主要介绍了SpringBoot + openFeign实现远程接口调用,需要的朋友可以参考下
    2022-11-11
  • RocketMQ producer容错机制源码解析

    RocketMQ producer容错机制源码解析

    这篇文章主要为大家介绍了RocketMQ producer容错机制源码解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • 详解SpringBoot的jar为什么可以直接运行

    详解SpringBoot的jar为什么可以直接运行

    SpringBoot提供了一个插件spring-boot-maven-plugin用于把程序打包成一个可执行的jar包,本文给大家介绍了为什么SpringBoot的jar可以直接运行,文中有相关的代码示例供大家参考,感兴趣的朋友可以参考下
    2024-02-02
  • Springboot整合quartz实现多个定时任务实例

    Springboot整合quartz实现多个定时任务实例

    这篇文章主要介绍了Springboot整合quartz实现多个定时任务代码实例,Quartz 是一款功能强大的开源任务调度框架,几乎可以集成到任何 Java 应用程序中,Quartz 可用于创建简单或复杂的任务调度,用以执行数以万计的任务,需要的朋友可以参考下
    2023-08-08
  • Java利用IO流实现简易的记事本功能

    Java利用IO流实现简易的记事本功能

    本文将利用Java中IO流编写一个模拟日记本的程序,通过在控制台输入指令,实现在本地新建文件,打开日记本和修改日记本等功能,感兴趣的可以了解一下
    2022-05-05
  • java通过url读取远程数据并保持到本地的实例代码

    java通过url读取远程数据并保持到本地的实例代码

    本文通过实例代码给大家介绍了java通过url读取远程数据并保持到本地的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-07-07
  • 如何解决Field name doesn‘t have a default value报错问题

    如何解决Field name doesn‘t have a defau

    这篇文章主要介绍了如何解决Field name doesn‘t have a default value报错问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • MapReduce中ArrayWritable 使用指南

    MapReduce中ArrayWritable 使用指南

    MapReduce是一种编程模型,用于大规模数据集的并行运算。概念"Map(映射)"和"Reduce(归约)"和他们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。他极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。
    2014-08-08

最新评论