super 关键字与 this 类似,this 用来表示当前类的实例,super 用来表示父类。

  super 可以用在子类中,通过点号(.)来获取父类的成员变量和方法。super 也可以用在子类的子类中,Java 能自动向上层类追溯。

  父类行为被调用,就好象该行为是本类的行为一样,而且调用行为不必发生在父类中,它能自动向上层类追溯。

  super 关键字的功能:

  · 调用父类中声明为 private 的变量。

  · 点取已经覆盖了的方法。

  · 作为方法名表示父类构造方法。

  调用隐藏变量和被覆盖的方法

  1. public class Demo{

  2. public static void main(String[] args) {

  3. Dog obj = new Dog();

  4. obj.move();

  5. }

  6. }

  7. class Animal{

  8. private String desc = "Animals are human's good friends";

  9. // 必须要声明一个 getter 方法

  10. public String getDesc() { return desc; }

  11.

  12. public void move(){

  13. System.out.println("Animals can move");

  14. }

  15. }

  16. class Dog extends Animal{

  17. public void move(){

  18. super.move(); // 调用父类的方法

  19. System.out.println("Dogs can walk and run");

  20. // 通过 getter 方法调用父类隐藏变量

  21. System.out.println("Please remember: " + super.getDesc());

  22. }

  23. }

  运行结果:

  Animals can move

  Dogs can walk and run

  Please remember: Animals are human's good friends

  move() 方法也可以定义在某些祖先类中,比如父类的父类,Java 具有追溯性,会一直向上找,直到找到该方法为止。

  通过 super 调用父类的隐藏变量,必须要在父类中声明 getter 方法,因为声明为 private 的数据成员对子类是不可见的。

  调用父类的构造方法

  在许多情况下,使用默认构造方法来对父类对象进行初始化。当然也可以使用 super 来显示调用父类的构造方法。

  1. public class Demo{

  2. public static void main(String[] args) {

  3. Dog obj = new Dog("花花", 3);

  4. obj.say();

  5. }

  6. }

  7. class Animal{

  8. String name;

  9. public Animal(String name){

  10. this.name = name;

  11. }

  12. }

  13. class Dog extends Animal{

  14. int age;

  15. public Dog(String name, int age){

  16. super(name);

  17. this.age = age;

  18. }

  19.

  20. public void say(){

  21. System.out.println("我是一只可爱的小狗,我的名字叫" + name + ",我" + age + "岁了");

  22. }

  23. }

  运行结果:

  我是一只可爱的小狗,我的名字叫花花,我3岁了

  注意:无论是 super() 还是 this(),都必须放在构造方法的第一行。

  值得注意的是:

  · 在构造方法中调用另一个构造方法,调用动作必须置于最起始的位置。

  · 不能在构造方法以外的任何方法内调用构造方法。

  · 在一个构造方法内只能调用一个构造方法。

  如果编写一个构造方法,既没有调用 super() 也没有调用 this(),编译器会自动插入一个调用到父类构造方法中,而且不带参数。(编辑:雷林鹏 来源:网络)

[Java学习] Java super关键字的更多相关文章

  1. [Java学习]面向对象-super关键字;final关键字

    super关键字 super代表的是当前子类对象中的父类型特征,可以看做是this的一部分.与this不同,不是引用,不存储对象内存地址. super可以用在什么位置 1 可以用在成员方法中.不能用在 ...

  2. java学习之super关键字

    对于具有public或者protected属性的父类,其子类若想继承父亲的属性或者方法,那么需要用到super 实例:

  3. java基础学习总结——super关键字

    一.super关键字

  4. java基础之super关键字

    一.在java里面,对于super关键字通常有两种用法: 1. 用在子类的构造方法里(初始化用),主要是调用父类的默认构造方法,如果父类有不止一个构造方法,可以通过super指定具体的构造函数,比如 ...

  5. Java学习之finally关键字总结

    Java中的final关键字非常重要,它可以应用于类.方法以及变量.这篇文章中我将带你看看什么是final关键字?将变量,方法和类声明为final代表了什么?使用final的好处是什么?最后也有一些使 ...

  6. Java学习笔记18---final关键字修饰变量、方法及类

    英语里final这个单词大家都知道是"最终的"意思,其实还有一个意思是"不可更改的".在Java里,final关键字作"不可更改的"来解释更 ...

  7. Java学习笔记——static关键字与静态的使用方法

    static:可以修饰成员变量和成员方法. 当变量被static修饰后,则其可以直接被类名调用.类名.成员. static特点: 随着类的加载而加载: 优先于对象存在: 被所有的对象共享,节省空间,但 ...

  8. Java继承:super关键字、构造器、final用法

    一.继承 继承好处 1.提高代码的重用性 2.提高代码的扩展性和维护性 3.为多态打下了基础 继承类型 继承子类创建对象的过程 二.super关键字的使用 理解:super代表父类的引用,用于访问父类 ...

  9. Java中的super关键字和this关键字作用介绍

    一.super关键字的作用 1.子类在构造方法中显示调用父类构造方法 super可以在子类的构造方法中显示调用父类的构造方法:并且这行代码必须出现在子类构造方法的第一行.原因:因为父类构造方法没有执行 ...

随机推荐

  1. Root :: AOAPC I: Beginning Algorithm Contests (Rujia Liu) Volume 5. Dynamic Programming

    10192 最长公共子序列 http://uva.onlinejudge.org/index.php?option=com_onlinejudge& Itemid=8&page=sho ...

  2. python 爬虫煎蛋网

    import urllib.request import os from urllib import error import re import base64 def url_open(url): ...

  3. 在notepad++里面使用正则表达式替换掉所有行逗号前面内容

    需求:在notepad++里面使用正则表达式替换掉所有行逗号前面内容,一文本内容如下(只贴一小部分,实际上N多): 级别,層級程序,程式插件,外掛程式鼠标,滑鼠打印,列印打开,開啟博客,部落格联系,聯 ...

  4. 利用arcgis处理遥感栅格数据,得到省平均值数据

    1.准备全国省级行政区数据,需要有省级行政区信息,如下所示: 2.生成渔网数据,操作完成会生成一个面数据和一个点数据,我们主要用点数据进行后面的操作. 3.提取栅格数据的值到渔网点数据中. 4.将区域 ...

  5. 从JavaWeb的角度认识Nginx

    作为一名JavaWeb方向程序员,更多的是写服务器后台代码,但是俗话说,不想当架构师的程序员不是好程序员,我们要对并发.负载等词汇进行深入探索. 一.重新认识Tomcat Tomcat属于轻量级的We ...

  6. ELK学习笔记之Logstash和Filebeat解析对java异常堆栈下多行日志配置支持

    0x00 概述 logstash官方最新文档.假设有几十台服务器,每台服务器要监控系统日志syslog.tomcat日志.nginx日志.mysql日志等等,监控OOM.内存低下进程被kill.ngi ...

  7. tensorflow mnist 给一张手写字辨别

    https://www.jianshu.com/p/db2afc0b0334 https://blog.csdn.net/xxzhangx/article/details/54563574

  8. windows 常用快捷键和dos命令

    快捷键 win + R 打开dos命令行窗口 win + E 打开资源管理窗口 (计算机) shift + 鼠标右击 + select 在此处打开命令窗口 可在资源管理目录下打开dos命令 windo ...

  9. AtCoder 杂题训练

    前言: 因为要普及了,今年没一等就可以退役去学文化课了,所以暑假把历年noip普及组都刷了一遍,离noip还有50+天,想弄点强化训练什么的. 想了想,就这些天学文化课之余有空就把AtCoder之前那 ...

  10. bootstrap栅格系统进行偏移格式

    本文为博主原创,转载请注明出处: offset偏移都是向右偏移,且只能向右偏移,例: col-md-offset-2,向右偏移两列. col-md-pull-偏移数值         //向左偏移 c ...