返回顶部
首页 > 资讯 > 精选 >如何使用Java的super关键字
  • 906
分享到

如何使用Java的super关键字

2023-06-15 08:06:29 906人浏览 泡泡鱼
摘要

这篇文章给大家分享的是有关如何使用Java的super关键字的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Java的super关键字当子类重写父类的方法后,子类对象将无法直接访问父类被重写的方法。为了解决这个问题

这篇文章给大家分享的是有关如何使用Java的super关键字的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

Java的super关键字

当子类重写父类的方法后,子类对象将无法直接访问父类被重写的方法。为了解决这个问题,在Java中专门提供了一个super关键字来访问父类的成员,例如访问父类的成员变量、成员方法和构造方法。下面分两种情况来学习一下super关键字的具体用法。

(1)使用super关键字调用父类的成员变量和成员方法,具体格式如下:

super.成员变量super.成员方法([参数1,参数2...])

接下来通过一个案例来学习如何使用super关键字调用父类的成员变量和成员方法,如文件1所示。
文件1 Example03.java

// 定义Animal类     class Animal {         String name = "动物";          // 定义动物叫的方法         void shout() {              System.out.println("动物发出叫声");         }     }     // 定义Dog类继承动物类     class Dog extends Animal {         String name = "犬类";          // 重写父类的shout()方法          void shout() {             super.shout();    // 访问父类的成员方法         }          // 定义打印name的方法         void printName() {             System.out.println("name=" + super.name);// 访问父类的成员变量         }     }     // 定义测试类      public class Example03{         public static void main(String[] args) {             Dog dog = new Dog();  // 创建一个dog对象             dog.shout();           // 调用dog对象重写的shout()方法             dog.printName();      // 调用dog对象的的printName()方法         }     }

运行结果如图1所示。

如何使用Java的super关键字

图1 运行结果

文件1中,定义了一个Dog类继承Animal类,重写了Animal类的shout()方法并重新定义了子类的name属性。在子类Dog的shout()方法中使用“super.shout()”调用了父类被重写的方法,在printName()方法中使用“super.name”访问父类的成员变量。从运行结果可以看出,子类通过super关键字成功地访问了父类成员变量和成员方法。

(2)使用super关键字调用父类的构造方法,具体格式如下:

super([参数1,参数2...])

接下来就通过一个案例来学习,如何使用super关键字来调用父类的构造方法,如文件2所示。

文件2 Example04.java

// 定义Animal类 class Animal {     // 定义Animal类有参的构造方法     public Animal(String name) {          System.out.println("我是一只" + name);     } } // 定义Dog类继承Animal类 class Dog extends Animal {     public Dog() {         super("沙皮狗");          // 调用父类有参的构造方法     } } // 定义测试类 public class Example04 {     public static void main(String[] args) {         Dog dog = new Dog();   // 创建Dog类的实例对象     } }

运行结果如图2所示。

如何使用Java的super关键字

图2 运行结果

根据前面所学的知识,文件1中在创建Dog类对象时一定会调用Dog类的构造方法,从运行结果可以看出,Dog类的构造方法被调用时,执行了内部的super(“沙皮狗”)方法,从而调用了父类的有参构造方法。需要注意的是,通过super调用父类构造方法的代码必须位于子类构造方法的第一行,并且只能出现一次,否则程序在编译期间就会报错。

将文件1第11行代码进行注释,程序就会出现编译错误,如图3所示。

如何使用Java的super关键字

图3 运行结果

从图3可以看出,程序编译出现错误,显示“Implicit super constructor Animal() is undefined. Must explicitly invoke another constructor(未定义隐式无参构造方法,必须显示的调用另一个构造方法)”的错误。出错的原因是,在子类的构造方法中一定会调用父类的某个构造方法。这时可以在子类的构造方法中通过super关键字指定调用父类的哪个构造方法,如果没有指定,在实例化子类对象时,会默认调用父类无参的构造方法,而在文件2中,父类Animal中只定义了有参构造方法,未定义无参构造方法,所以在子类默认调用父类无参构造方法时就会出错。

为了解决上述程序的编译错误,可以在子类中显示地调用父类中已有的构造方法,或者在父类中定义无参的构造方法。现将文件2中的Animal类进行修改,在父类中添加无参构造方法来解决上述编译错误,如文件3所示。

文件3 Example05.java

 // 定义Animal类    class Animal {          // 定义Animal无参的构造方法         public Animal() {             System.out.println("我是一只动物");         }          // 定义Animal有参的构造方法         public Animal(String name) {             System.out.println("我是一只" + name);         }     }     // 定义Dog类,继承自Animal类     class Dog extends Animal {          // 定义Dog类无参的构造方法         public Dog() {         }     }     // 定义测试类     public class Example05 {         public static void main(String[] args) {             Dog dog = new Dog(); // 创建Dog类的实例对象         }     }

运行结果如图4所示。

如何使用Java的super关键字

图4 运行结果

从图4可以看出,子类在实例化时默认调用了父类无参的构造方法。通过这个案例还可以得出一个结论:在定义一个类时,如果没有特殊需求,当定义了有参构造方法后,尽量在类中再显示地定义一个无参构造方法,这样可以避免该类被继承时出现错误。

感谢各位的阅读!关于“如何使用Java的super关键字”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

--结束END--

本文标题: 如何使用Java的super关键字

本文链接: https://lsjlt.com/news/279293.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何使用Java的super关键字
    这篇文章给大家分享的是有关如何使用Java的super关键字的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Java的super关键字当子类重写父类的方法后,子类对象将无法直接访问父类被重写的方法。为了解决这个问题...
    99+
    2023-06-15
  • 如何使用Java中的Super关键字
    本篇内容主要讲解“如何使用Java中的Super关键字”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用Java中的Super关键字”吧!一、重写父类方法什么是重写父类方法在继承关系中,子类...
    99+
    2023-06-15
  • super关键字如何在Java中使用
    super关键字如何在Java中使用?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。 java方法重写和super关键字  在继承中,其实就是...
    99+
    2023-05-31
    java ava super
  • Java super关键字的使用详解
    目录1.super介绍2.super的基本使用3.子类和父类方法的调用细节4.super和this的区别1.super介绍 我们可以通过super关键字来实现对父类成员的访问,用来引...
    99+
    2024-04-02
  • Java super关键字怎么使用
    本文小编为大家详细介绍“Java super关键字怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java super关键字怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1.s...
    99+
    2023-07-02
  • Java中super关键字介绍以及super()的使用
    目录1、super的使用:2、先复习一下this关键字的使用。3、super关键字:总结:1、super的使用: (1)super是一个关键字。 (2)super和this很类似,我...
    99+
    2024-04-02
  • java中的super关键字怎么使用
    在Java中,super是一个关键字,用于引用父类的成员变量、成员方法和构造方法。1. 引用父类的成员变量:可以使用super关键字...
    99+
    2023-08-08
    java super
  • Java中super关键字怎么使用
    这篇文章主要讲解了“Java中super关键字怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java中super关键字怎么使用”吧!supersuper是一个关键字,全部小写。sup...
    99+
    2023-07-02
  • Java super关键字的使用方法详解
    构造方法中的super关键字在Java子类的构造方法中可以通过super关键字来调用父类的构造方法。其用法为: 1) super(); 访问父类中的无参构造函数 2) super (paras…); 访问父类中的成员函数yyy super(...
    99+
    2023-05-31
    java super ava
  • Java关键字super解释
    目录 前言(废话文学)前言(定义)super()之构造方法super()之成员函数super()之成员变量结束语 前言(废话文学) 又是看了一大堆文字介绍,非常系统和官方,理解要费半天...
    99+
    2023-10-25
    java jvm 开发语言
  • Java中super关键字怎么用
    本篇内容介绍了“Java中super关键字怎么用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!super有什么用?(1)当子类中构造方法第一...
    99+
    2023-06-29
  • java中this与super关键字的使用方法
    java中this与super关键字的使用方法这几天看到类在继承时会用到this和super,这里就做了一点总结,与各位共同交流,有错误请各位指正~thisthis是自身的一个对象,代表对象本身,可以理解为:指向对象本身的一个指针。this...
    99+
    2023-05-31
    java this super
  • Java中this和super关键字的使用详解
    目录父类空间优先于子类对象产生super和this的含义super和this的用法继承的特点父类空间优先于子类对象产生 在每次创建子类对象时,先初始化父类空间,再创建其子类对象本身。...
    99+
    2022-11-13
    Java this super关键字 Java this关键字 Java super关键字
  • Java中super关键字详解
    目录super有什么用?super什么时候不可以省略呢?super在内存图中是如何存在的呢?super使用时的注意事项总结super有什么用? (1)当子类中构造方法第一行没有sup...
    99+
    2024-04-02
  • 详解怎么用Java的super关键字
    Java的super关键字 当子类重写父类的方法后,子类对象将无法直接访问父类被重写的方法。为了解决这个问题,在Java中专门提供了一个super关键字来访问父类的成员,例如访问父类...
    99+
    2024-04-02
  • Java的this和super关键字怎么用
    本文小编为大家详细介绍“Java的this和super关键字怎么用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java的this和super关键字怎么用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、“ t...
    99+
    2023-06-30
  • java中super关键字有什么用
    在Java中,super关键字有以下几种用途:1. 调用父类的构造方法:在子类的构造方法中,可以使用super关键字来调用父类的构造...
    99+
    2023-08-24
    java super
  • Java中super关键字的用法和细节
    目录前言 1. super关键字的用法2. super关键字的使用细节3. super和this关键字的比较总结前言     因为西...
    99+
    2024-04-02
  • Java关键字this与super详解用法
    目录一、this 关键字的使用1. 概述2. 作用3. 使用3.1 修饰属性和方法3.2 调用构造器3.3 返回当前对象二、super关键字的使用1. 概述2. 使用3. 使用3.1...
    99+
    2024-04-02
  • Java基础之super关键字浅析
    目录一、定义二、应用2.1    应用范围2.2    用法2.2.1    在子类中调用父类的属性或方法2.2.2 &n...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作