ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

中高级Java程序员,挑战20k+,知识点汇总(三),Java中super关键字与final关键字

2022-08-31 16:31:51  阅读:267  来源: 互联网

标签:知识点 Java 构造方法 子类 关键字 父类 super final


Java中super关键字

super 可以理解为是指向自己父(超)类对象的一个指针,而这个超类指的是离自己最近的一个父类。

super关键字的作用:

  • 调用父类的构造方法
  • 调用父类的成员方法

注意:

1、super只能应用在成员方法和构造方法中,不能应用在静态方法中(和this是一样的),如果在构造方法中使用super,必须放在方法的第一行。

2、构造方法不存在覆盖的概念,构造方法可以重载。

3、关于构造方法的执行顺序:先执行父类的再执行子类的,必须完成父类的所有初始化,才能创建子类。

4、程序运行时机优先级是:类加载-->静态代码块运行-->静态变量初始化-->对应的构造函数运行

为什么会有super关键字

  • 因为子类必须要调用父类的构造方法,先把父类构造完成,因为子类依赖于父类,没有父,也就没有子
  • 有时候需要在子类中,显示的调用父类的成员方法和父类的构造方法。
  • 子类中即使我们没有显示的调用父类的无参构造方法,那么它也会默认使用super()调用父类的无参构造方法,此种情况下子类如果显示的设置了有参构造器,必须显示设置无参构造器,否则编译时将会失败。


super和this在构造方法中的使用:

  • super(参数):调用父类中的某一个构造函数(必须为构造函数中的第一行)。
  • this(参数):调用本类中的构造函数(必须为构造函数中的第一行)。

 

Java中final关键字

final表示不可改变的含义

final关键字使用总结:

  • 使用final关键字修饰的类不能被继承
  • 使用final关键字修饰的方法不能被覆盖(重写)
  • 使用final关键字修饰的变量,在使用前必须显示初始化。对于final修饰的成员变量,我们有且只有两个地方可以给它赋值,一个是声明该成员时赋值,另一个是在构造方法中赋值,在这两个地方我们必须给它们赋初始值。
  • 使用final关键字修饰的变量(基本类型)一旦赋值,不能被改变。如果使用final关键字修饰的引用类型,那么这个引用只能指向一个对象,也就是说这个引用不能通过 ** new对象** 方式再次赋值,但被指向的对象中属性值是可以修改的
  • 构造方法不能被final修饰
  • 会影响Java类的初始化,final定义的静态变量调用时不会执行java的类初始化方法,也就是说不会执行static代码块等相关语句,这是由java虚拟机规定的。

 

标签:知识点,Java,构造方法,子类,关键字,父类,super,final
来源: https://www.cnblogs.com/xiaotian0422/p/16643506.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有