day18super关键字

super关键字

一、定义

1、super是一个关键字,全部小写。

2、super关键字代表着当前对象的那一部分父类特征。

3、默认构造方法的第一行有this(),super()。两个不可能同时存在,只存在一个,都没有的时候默认是super()。

4、父类的构造方法一定会执行。

二、super与this对比

​ this:
​ this能出现在实例方法和构造方法中。
​ this的语法是:“this.”、“this()”
​ this不能使用在静态方法中。
​ this. 大部分情况下是可以省略的。
​ this.什么时候不能省略呢? 在区分局部变量和实例变量的时候不能省略。
​ public void setName(String name){
​ this.name = name;
​ }
​ this() 只能出现在构造方法第一行,通过当前的构造方法去调用“本类”中
​ 其它的构造方法,目的是:代码复用。

super:
super能出现在实例方法和构造方法中。
super的语法是:“super.”、“super()”
super不能使用在静态方法中。
super. 大部分情况下是可以省略的。
super.什么时候不能省略呢。当父类中有的属性,子类中也有,在子类中想调用父类中的属性的时候不可以省略。
super() 只能出现在构造方法第一行,通过当前的构造方法去调用“父类”中的构造方法,

​ 目的是:创建子类对象的时候,先初始化父类型特征。

三、能不能使用在静态方法当中

super 不能使用在静态方法当中,因为 super 代表了当前对象上的父类型特征, 静态方法中没有 this,肯定也是不能使用 super 的。

四、super什么时候可以省略

不可以省略的时候:

当父类中有的属性,子类中也有,在子类中想调用父类中的属性的时候不可以省略。

class A {
    int a;
    int b;

    //父类中的有参构造方法
    public A(int a, int b) {
        this.a = a;
        this.b = b;
    }
}

class B extends A {
    int a=3;

    public B() {
        super(1, 2);
    }
    public void move(){
        System.out.println(this.a);
        System.out.println(super.a);
    }

总结:父类和子类中有同名实例变量或者有同名的实例方法,想在 子类中访问父类中的实例变量或实例方法,则super 是不能省略的,其它情况都可以省略。

五、super的三种使用

1、super.属性名

2、super.方法名(实参) 调用父类中的方法,当与子类中的方法名相同的时候不可以省略,当不重名的时候可以省略

​ 例子:super.move2(2);

3、super(实参)在构造方法中的使用:这种用法是通过当前的构造方法调用父类的构造方法。

作用:

1、调用父类的构造方法,使用这个构造 方法来给当前子类对象初始化父类型特征。

2、代码复用。

例子:

class A{
    int a ;
    int b;
//父类中的有参构造方法
    public A(int a, int b) {
        this.a = a;
        this.b = b;
    }
}
class B extends A{
    int c;
//子类中的有参构造方法
    public B(int a, int b, int c) {
        super(a, b);
        this.c = c;
    }

super()的作用:初始化当前对象的父类的特征,就是给父类型的参数进行赋值。

super关键字代表着当前对象的那一部分父类特征

super什么时候可以省略

六、注意:

1、 this 是可以单独使用的引用,但 super 无法输出,编译器提示 super 要使用必须是“super.xxx”,显然 super 并不指向独立的对象,并不是保存某个对象的内存地址。

2、super的点一定不可以省略,因为super不可以单独使用。

3、super 不是引用。super也不保存内存地址,super也不指向任何对象。
super 只是代表当前对象内部的那一块父类型的特征。

4、super的jvm图
子类可以使用super关键字访问父类中的方法和属性。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值