Java中的final关键字和抽象类详解

 更新时间:2023年07月15日 09:37:03   作者:信橙则灵  
这篇文章主要介绍了Java中的final关键字和抽象类详解,当不希望 类被继承时,可以用final修饰比如不希望子类重写父类时,当不希望某个局部变量被修改时,对参数进行修饰,需要的朋友可以参考下

final关键字

可以修饰类、属性、方法和局部变量【参数】

使用场景

1、当不希望 类被继承时,可以用final修饰。比如不希望子类重写父类时。

2、当不希望子类重写父类的某个方法。注意:此时不能重写但能继承父类此方法使用。

3、当不希望类的某个属性的值被修改,可以使用final修饰。一般这种属性使用全大写命名。

4、当不希望某个局部变量被修改时,对参数进行修饰

使用细节

1、final 修饰的属性一般称之为常量,

2、final 修饰的属性在定义时,必须赋初始值,并且之后不能再修改。

  • 在定义属性的时候,进行赋值。
  • 在构造器中
  • 在代码块中

3、当 final 修饰的属性是静态的,则初始化的位置只能是:

  • 定义时
  • 在静态代码块中,注意不能在构造器中赋值了。

4、final 修饰的类不能继承,但是可以进行实例化

5、如果类不是final类,但是含有final方法,则该方法虽然不能重写,但仍能被继承。

6、一般如果类已经被final修饰了,则内部的方法就没必要使用final了

7、final 和 static 往往搭配对属性进行使用,效率更高,这样不会导致类加载,底层编译器对这种修饰进行了优化处理。

抽象类

当父类的一些方法不能确定时,可以用abstract关键字来修饰该方法,这个方法就是抽象方法,此时需将该类用 abstract 来修饰,即抽象类。

一般,抽象类会被继承,在子类中实现父类中不能确定的方法。

抽象类的介绍

1、当使用 abstract 关键字来修饰一个类时,这个类就叫 抽象类

2、用 abstract 关键字来修饰一个方法时,这个方法就是抽象方法。注意:抽象方法是没有方法体的

3、抽象类的价值更多的是设计,是设计者设计好后,让子类继承并实现抽象方法。

4、抽象类,一般考官在问的时候,主要在框架和设计模式使用比较多。

抽象类的使用细节

1、抽象类是不能被实例化的, 但可以使用匿名内部类声明。

2、抽象类不一定要包含抽象方法。

3、一旦包含了抽象方法,则这个类必须声明为抽象类。

4、abstract 只能修饰类和方法,不能修饰属性和其他的。

5、如果一个类继承了抽象类,则它必须实现抽象类的所有抽象方法,除非它自己也声明为abstract类。

在这里插入图片描述

6、抽象方法不能使用private、final、和static来修饰,因为这些关键字的修饰,会影响子类的重写。

模版设计模式

需求:

1、有多个类,完成不同的任务job

2、要求能够得到各自完成任务的时间

到此这篇关于Java中的final关键字和抽象类详解的文章就介绍到这了,更多相关Java的final和抽象类内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 简单谈谈Java类与类之间的关系

    简单谈谈Java类与类之间的关系

    类与类之间的关系对于理解面向对象具有很重要的作用,以前在面试的时候也经常被问到这个问题,在这里我就简单给大家介绍一下。
    2016-05-05
  • Spring超详细讲解注解开发

    Spring超详细讲解注解开发

    Spring是轻代码而重配置的框架,配置比较繁重,影响开发效率,所以注解开发是一种趋势。本文将通过示例为大家详细讲讲Spring如何实现注解开发,感兴趣的可以学习一下
    2022-08-08
  • java绘制五子棋棋盘

    java绘制五子棋棋盘

    这篇文章主要为大家详细介绍了java绘制五子棋棋盘,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-01-01
  • 深入浅出理解Java Lambda表达式之四大核心函数式的用法与范例

    深入浅出理解Java Lambda表达式之四大核心函数式的用法与范例

    Lambda 表达式,也可称为闭包,它是推动 Java 8 发布的最重要新特性。Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中)。使用 Lambda 表达式可以使代码变的更加简洁紧凑,今天小编带你理解Lambda表达式之四大核心函数式的用法,感兴趣的朋友快来看看吧
    2021-11-11
  • SpringBoot获取不到用户真实IP的解决方法

    SpringBoot获取不到用户真实IP的解决方法

    最近遇到个问题,项目部署后发现服务端无法获取到客户端真实的IP地址,本文就来介绍一下这个问题的解决方法,感兴趣的可以了解一下
    2023-08-08
  • Mybatis foreach用法解析--对于list和array

    Mybatis foreach用法解析--对于list和array

    这篇文章主要介绍了Mybatis foreach用法解析--对于list和array,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • Java 如何用二维数组创建空心菱形

    Java 如何用二维数组创建空心菱形

    这篇文章主要介绍了Java 如何用二维数组创建空心菱形,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • 详解Spring Security如何在权限中使用通配符

    详解Spring Security如何在权限中使用通配符

    小伙伴们知道,在Shiro中,默认是支持权限通配符的。现在给用户授权的时候,可以一个权限一个权限的配置,也可以直接用通配符。本文将介绍Spring Security如何在权限中使用通配符,需要的可以参考一下
    2022-06-06
  • IDEA无法使用终端terminal问题的解决方案

    IDEA无法使用终端terminal问题的解决方案

    这篇文章主要介绍了IDEA无法使用终端terminal问题的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • Java中List删除元素的几种方法总结推荐

    Java中List删除元素的几种方法总结推荐

    这篇文章主要给大家介绍了关于Java中List删除元素的几种方法总结,相信大家在日常的开发过程中,经常需要对List或Map里面的符合某种业务的数据进行删除,需要的朋友可以参考下
    2023-10-10

最新评论