Java 中的super关键字

原创 2018年04月15日 10:31:50

super关键字表示对某个类的父类的引用。一般而言,super有两种通用形式:第一种用来访问被子类的成员隐藏的父类成员;第二种则是可以调用父类的构造函数。接下来说一下两种使用形式的方法和规则。

第一种:

如子类和父类有同名的成员变量或方法,则父类的成员将会被覆盖,此时可用下面的方式来引用父类的成员:

super.<成员变量名>
super.<成员方法名>

在Java语言中,用过继承关系实现对成员的访问是按照最近匹配原则进行的,规则如下:

(1)在子类中访问成员变量和方法时将优先查找是否在本类中已经定义,如果该成员在本类中存在,则使用本类的,否则,按照继承层次的顺序往父类查找,如果未找到,继续逐层向上到其祖先类查找。

(2)super特指访问父类的成员,使用super首先到直接父类查找匹配成员,如果未找到,再逐层向上到祖先类查找。

第二种:

子类可以通过super关键字调用父类中定义的构造方法,格式如下:

super(调用参数列表)

其中调用参数列表必须和父类的某个构造函数方法的参数列表完全匹配。

子类与其直接父类之间的构造方法存在约束关系,有以下几条重要原则:

(1)按继承关系,构造方法是从顶向下进行调用的。

(2)如果子类没有构造方法,则它默认调用父类无参的构造方法,如果父类中没有无参数的构造方法,则将产生错误。

(3)如果子类有构造方法,那么创建子类的对象时,先执行父类的构造方法,再执行子类的构造方法。

(4)如果子类有构造方法,但子类的构造方法中没有super关键字,则系统默认执行该构造方法时会产生super()代码,即该构造方法会调用父类无参数的构造方法。

(5)对于父类中包含有参数的构造方法,子类可以通过在自己的构造方法中使用super关键字来引用,而且必须是子类构造函数方法中的第一条语句。

(6)Java语言中规定当一个类中含有一个或多个有参构造方法,系统不提供默认的构造方法(即不含参数的构造方法),所以当父类中定义了多个有参数构造方法时,应考虑写一个无参数的构造方法,以防子类省略super关键字时出现错误。

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zai_xia/article/details/79946984

java中super关键字小结

在学习Java继承的相关的知识的时候,我们会遇到子类父类之间的继承关系,遇得到麻烦的向上塑形和向下塑形,自此总结一下,子父类继承关系中的super关键字的用法:...
  • u010571874
  • u010571874
  • 2015-08-16 21:07:33
  • 1088

深入认识Java中super关键字

/* *先写一点点再说,之后具体来讲还得把Java编程思想拿回来参考 */     网络上去查super关键字好多观点都在讲,super关键字是指向父类的一个对象的引用,代表一个父类对象,但经过...
  • whatever9527
  • whatever9527
  • 2016-08-28 08:52:41
  • 569

Java super关键字详解

一.super关键字作用 1:主要存在于子类方法中,用于指向子类对象中父类对象。 2:访问父类的属性 3:访问父类的函数 4:访问父类的构造函数 二.super注意的地方 this和super很像...
  • qq_33642117
  • qq_33642117
  • 2016-07-15 17:14:48
  • 8265

Java super关键字用法

分别介绍了在构造方法和非构造方法中super关键字的四种不同的用法。
  • ccpat
  • ccpat
  • 2015-03-20 14:02:15
  • 2360

Java中super关键字的用法及示例

注意到这个关键字一段时间了 主要是下面想到的,问题是为什么要在super的setup函数前面? @Override protected void setup(Context context) t...
  • Erli11
  • Erli11
  • 2014-04-24 14:56:57
  • 7090

this 和super 关键字的区别

属性的区别:this访问本类中的属性,如果本类没有此属性则从父类中继续查找。super访问父类中的属性。 方法的区别:this访问本类中的方法,如果本类没有此方法则从父类中继续查找。super访问父...
  • wanping321
  • wanping321
  • 2017-01-09 16:12:59
  • 2898

java中super关键字的三种用法

  • 2012年09月27日 10:40
  • 19KB
  • 下载

学习prototypejs中的继承实现机制(二):让$super更像java中的super关键字

我们先研究下prototypejs是如何做到$super,后面再看我们能不能改造它,让$super更像java中的super关键字。 在OOP语言(如java)中,如果子类Child继承父类Base,...
  • aitangyong
  • aitangyong
  • 2015-10-19 18:16:17
  • 519

Java中this与super关键字

关键字--this     1、this是什么?     在Java中,this关键字的作用和其词义很接近.  它在方法内部使用,即这个方法所属对象的引用;     它在构造器内部使用,表示该构...
  • u014285482
  • u014285482
  • 2015-01-02 23:20:33
  • 876

Java学习记录(五)super关键字的用法

Java中super关键字的两种用途分析
  • wuwenhui_2
  • wuwenhui_2
  • 2015-01-30 17:37:39
  • 578
收藏助手
不良信息举报
您举报文章:Java 中的super关键字
举报原因:
原因补充:

(最多只允许输入30个字)