【Java基础篇】第十四章 super

有时候,不是因为你没有能力,也不是因为你缺少勇气,只是因为你付出的努力还太少,所以,成功便不会走向你。而你所需要做的,就是坚定你的梦想,你的目标,你的未来,然后以不达目的誓不罢休的那股劲,去付出你的努力,成功就会慢慢向你靠近。

导读:本篇文章讲解 【Java基础篇】第十四章 super,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

⭐⭐⭐Java基础篇目录⭐⭐⭐


🍁 第一章 Java开发环境搭建
🍁 第二章 标识符与关键字
🍁 第三章 变量
🍁 第四章 数据类型
🍁 第五章 运算符
🍁 第六章 控制语句
🍁 第七章 方法
🍁 第八章 认识面向对象
🍁 第九章 对象的创建和使用
🍁 第十章 封装
🍁 第十一章 this和static
🍁 第十二章 继承
🍁 第十三章 方法的覆盖和多态
🍁 第十四章 super


在这里插入图片描述

😉

1、super

复习this,并对比:

  • this能出现在实例方法和构造方法中
  • this的语法是this. 和this()
  • this不能使用在静态方法中
  • this在大部分情况下是可省略的
  • this在区分局部变量和实例变量的时候不能省略,this.name = name;
  • this()只能出现在构造方法的第一行,通过当前的构造方法调用本类的其他构造方法,目的是复用代码

对比this记忆super:

  • super能出现在实例方法和构造方法中
  • super的语法是super. 和super()
  • super不能使用在静态方法中
  • super.大部分情况下是可省略的
  • super不能省略的情况见后面
  • super()只能出现在构造方法的第一行,通过当前构造方法调用父类中的构造方法,目的是创建子类对象的时候,先初始化父类型特征

在这里插入图片描述

2、super()的用法

  • super()表示通过子类中的构造方法调用父类的构造方法
  • 当构造方法的第一行,既没有this(……)又没有super(……)的时候,默认会有一个super(),表示通过当前子类的构造方法调用父类的无参构造方法,所以必须保证父类中的无参构造方法是存在的
  • 既然this()和super()都只能出现在构造方法的第一行,那二者不会共存

在这里插入图片描述
在这里插入图片描述

3、super(实参)

先回顾一下继承:除了父类的构造方法无法继承,其余代码均可继承,但私有的不能直接访问。 那私有的如何访问?

答案是用super(实参)

/**
 * 银行账户类
 */
public class Accounts {
    private String actno;
    private double balance;
    public Accounts(){

    }
    public Accounts(String actno,double balance){
        this.actno = actno;
        this.balance = balance;
    }
    public String getActno(){
        return this.actno;
    }
    public void setActno(String actno){
        this.actno = actno;
    }

    public double getBalance(){
        return this.balance;
    }

    public void setBalance(double balance){
        this.balance = balance;
    }

}

class CreditAccounts extends Accounts{
    private double credit;
    public CreditAccounts(){

    }
    public CreditAccounts(String actno, double balance, double credit){
        super(actno,balance);
        this.credit = credit;
    }

    public double getCredit() {
        return credit;
    }

    public void setCredit(double credit) {
        this.credit = credit;
    }
}

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

super代表的是“当前对象的父类型特征”

在这里插入图片描述
super()实参的作用是:初始化当前对象的父类型特征,并不是创建新对象。

4、super不能省的情况

Java中允许在子类中出现和父类中一样的同名变量,即同名属性,此时在子类中访问父类的该变量,super不能省略。

this.name访问当前对象的name属性
super.name 访问当前对象的父类中的name属性

在这里插入图片描述
在这里插入图片描述
虽然用法上this和super很相似,但需要注意的是,super就是个关键字,它不是引用,不保存对象内存地址,也不指向堆区中的对象。super只是代表当前对象内部的那一块父类型特征。

Test t = new Test();
//这是合法的,打印出类名@对象地址哈希后的十六进制
System.out.println(this);

//没这个操作
System.out.println(super);

5、super调用父类中的方法

super.属性名 —>访问父类中的属性

super.方法名(传参) —>调用父类中的方法

super()或者super(传参)—>调用父类中的构造方法

不变的是,私有变量想直接访问还是只能在本类。父类中的私有属性,即使你super.属性名也还是访问不了,但可以super.getter()

在这里插入图片描述

<完结>

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/146113.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!