super关键字的作用

java中的super关键字是一个引用变量,用于引用父类对象。关键字“super”以继承的概念出现在类中。

主要用于以下情况:1.调用父类的方法   2.调用父类的变量  3.调用父类的构造方法

1.调用父类的方法

当我们要调用父类方法时使用。父类和子类都具有相同的命名方法,那么为了解决歧义,我们使用super关键字。这段代码有助于理解super关键字的使用情况。

  1. /* Base class Person */
  2. class Person
  3. {
  4. void message()
  5. {
  6. System.out.println("This is person class");
  7. }
  8. }
  9.  
  10. /* Subclass Student */
  11. class Student extends Person
  12. {
  13. void message()
  14. {
  15. System.out.println("This is student class");
  16. }
  17.  
  18. // Note that display() is only in Student class
  19. void display()
  20. {
  21. // will invoke or call current class message() method
  22. message();
  23.  
  24. // will invoke or call parent class message() method
  25. super.message();
  26. }
  27. }
  28.  
  29. /* Driver program to test */
  30. class Test
  31. {
  32. public static void main(String args[])
  33. {
  34. Student s = new Student();
  35.  
  36. // calling display() of Student
  37. s.display();
  38. }
  39. }

输出:

  1. This is student class
  2. This is person class

2.调用父类的变量

当子类和父类具有相同的数据成员时,会发生此情况。在这种情况下,JVM可能会模糊不清。我们可以使用以下代码片段更清楚地理解它:

  1. /* Base class vehicle */
  2. class Vehicle
  3. {
  4. int maxSpeed = 120;
  5. }
  6.  
  7. /* sub class Car extending vehicle */
  8. class Car extends Vehicle
  9. {
  10. int maxSpeed = 180;
  11.  
  12. void display()
  13. {
  14. /* print maxSpeed of base class (vehicle) */
  15. System.out.println("Maximum Speed: " + super.maxSpeed);
  16. }
  17. }
  18.  
  19. /* Driver program to test */
  20. class Test
  21. {
  22. public static void main(String[] args)
  23. {
  24. Car small = new Car();
  25. small.display();
  26. }
  27. }

输出:

  1. Maximum Speed: 120

3.调用父类的构造方法

super关键字也可以用来访问父类的构造函数。更重要的是,super关键字可以根据情况调用参数和非参数构造函数。以下是解释上述概念的代码片段:

  1. /* superclass Person */
  2. class Person
  3. {
  4. Person()
  5. {
  6. System.out.println("Person class Constructor");
  7. }
  8. }
  9.  
  10. /* subclass Student extending the Person class */
  11. class Student extends Person
  12. {
  13. Student()
  14. {
  15. // invoke or call parent class constructor
  16. super();
  17.  
  18. System.out.println("Student class Constructor");
  19. }
  20. }
  21.  
  22. /* Driver program to test*/
  23. class Test
  24. {
  25. public static void main(String[] args)
  26. {
  27. Student s = new Student();
  28. }
  29. }

输出:

  1. Person class Constructor
  2. Student class Constructor

我们通过子类构造函数使用关键字'super'调用父类构造函数。

补充:

1.调用super()必须是子类构造函数中的第一条语句。

java中关键字super的更多相关文章

  1. Java中关键字super与this的区别

    一.super关键字 在JAVA类中使用super来引用父类的成分,用this来引用当前对象,如果一个类从另外一个类继承,我们new这个子类的实例对象的时候,这个子类对象里面会有一个父类对象.怎么去引 ...

  2. Java中关键字continue、break和return的区别

    Java中关键字continue.break和return的区别: continue:跳出本次循环继续下一次循环 break:   跳出循环体,继续执行循环外的函数体 return:   跳出整个函数 ...

  3. Java中关键字this、super的含义及使用

    Java语言中this的含义及作用: 关键字this用来指向当前实例对象(内存里正在运行的哪个实例对象),它的另一作用是用来区分对象的成员变量与方法的形参. 关键字super指的是当前对象里边的父对象 ...

  4. 总结java中的super和this关键字

    知识点: 在java类中使用super引用父类的成分,用this引用当前对象 this可以修饰属性.构造器.方法 super可以修饰属性.构造器.方法 关于子类实例化过程中的内存分配,在下一篇博客中说 ...

  5. JAVA中的super和this关键字的使用

    一 this关键字 this关键字可以出现在构造方法和实例方法中,不能出现在静态方法中,这是因为静态方法可以用类名来调用,这时可能还没有任何对象诞生. this主要有两种用法: 1 用在构造方法中,调 ...

  6. java中关键字this的使用

    在团队代码中看到对于当前类中的方法,使用了this关键字.经过测试发现,在此种情况下,this关键字的使用可有可无.因此,对java中this的使用做下总结: package testTHIS; pu ...

  7. Java中的super与this解析

    好了,现在开始讨论this&super这两个关键字的意义和用法. 在Java中,this通常指当前对象,super则指父类的.当你想要引用当前对象的某种东西,比如当前对象的某个方法,或当前对象 ...

  8. Java中关键字static的使用与作用

    1.static的意义 static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念. 被static修饰的成员变量和 ...

  9. java中关键字static和final

    面向对象的不足 凡是有利必有弊,强对象编程,使得语法简单统一,但也有其缺点,而且有很多.我们在接下来的课程里会一点点接触到.我们今天先看第一个. 有些变量和函数确实没必要定义在一个类里.强行规定这些函 ...

随机推荐

  1. 线性表顺序存储_List

    #include "stdafx.h" #include "stdio.h" #include "stdlib.h" #include &q ...

  2. 【PAT甲级】1016 Phone Bills (25 分)(结构体排序)

    题意: 输入24个正整数代表从0到23每个小时通话一分钟花费的美分.输入一个正整数N(<=1000),然后输入N组字符串,每个字符串包含客户的名字和通话的时刻以及打出或者挂断的状态. 按照字典序 ...

  3. P1120/UVA307 小木棍(sticks) 题解

    题目描述 pdf 题解 注意的问题是,各个原始木棒的长度都是一样的! 说一下本题的总思路即:DFS+超强力剪枝!(详见本人的 AC 程序) 首先,我们要从小到大枚举原始木棒的长度len,也就是枚举答案 ...

  4. px(像素)、pt(点)、ppi、dpi、dp、sp之间的关系

    px:pixel,像素,电子屏幕上组成一幅图画或照片的最基本单元 pt:point,点,印刷行业常用单位,等于1/72英寸 ppi:pixel per inch,每英寸像素数,该值越高,则屏幕越细腻 ...

  5. MySQL 之存储引擎与数据类型与数据约束

    一.存储引擎场景 1.InnoDB 用于事务处理应用程序,支持外键和行级锁.如果应用对事物的完整性有比较高的要求,在并发条件下要求数据的一致性,数据操作除了插入和查询之外,还包括很多更新和删除操作,那 ...

  6. AtCoder agc007_d Shik and Game

    洛谷题目页面传送门 & AtCoder题目页面传送门 有\(1\)根数轴,Shik初始在位置\(0\).数轴上有\(n\)只小熊,第\(i\)只在位置\(a_i\).Shik每秒可以向左移动\ ...

  7. CSS - 伪类和伪元素

    1. CSS3中 :Pseudo-classes 伪类 ::Pseudo-elements 伪元素 2. 为什么叫伪类和伪元素? 伪类的效果可以通过添加一个实际的类来达到,而伪元素的效果则需要通过添加 ...

  8. iOS下JS与OC互相调用

    背景情况: app项目中有几个界面是需要经常变动的(不仅是内容还有UI布局等),比如活动宣传界面就是属于这一类.但是由于AppStore提交审核也是需要时间的,就算审核快,也不至于每次都为了这点事频繁 ...

  9. 【快学springboot】在springboot中写单元测试[Happyjava]

    前言 很多公司都有写单元测试的硬性要求,在提交代码的时候,如果单测通不过或者说单元测试各种覆盖率不达标,会被拒绝合并代码.写单元测试,也是保证代码质量的一种方式. junit单元测试 相信绝大多数的J ...

  10. PHP pclzip.php 解压中文乱码

    修改 pclzip中方法privExtractFile 代码 if ($p_path != '') { $p_entry['filename'] = $p_path."/".$p_ ...