Java基础——this和super关键字

2年前 (2022) 程序员胖胖胖虎阿
130 0 0


活动地址:CSDN21天学习挑战赛

Java基础——this和super

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()只能出现在构造方法的第一行,通过当前构造方法调用其他构造方法,目的是创建子类对象的时候,先初始化父类型特征

重要结论:

既没有this()又没有super()的话,默认会有一个super();

表示通过当前子类的构造方法调用父类的无参构造方法。

所以必须保证父类的无参构造方法是存在的!!!

this()和super()不能共存,它们都是只能出现在构造方法的第一行!!!

一个实例程序带你了解this和super

package com.shouyerenst.OOP;

public class SuperTest{
    public static void main (String[] args){
        new C();
    }
}
class A{
    public A(){
        //这里默认有super();
        System.out.println("1");
    }
}
class B extends A{
    public B() {
        //这里默认有super();
        System.out.println("2");
    }
    public B(String name){
        //这里默认有super();
        System.out.println("3");
    }
}
class C extends B{
    public C() {
        this("zhangsan");
        System.out.println("4");
    }
    public C(String name) {
        this(name,20);
        System.out.println("5");
    }
    public C(String name,int i) {
        super(name);
        System.out.println("6");
    }
}

这里大家可以好好思考一下输出结果是什么

13654

总结

super的使用:

​ super.属性名 【访问父类的属性】

​ super.方法名 【访问父类的方法】

​ super(实参) 【调用父类的构造方法】

Java基础——this和super关键字


感觉不错的话,动手点个赞吧!

版权声明:程序员胖胖胖虎阿 发表于 2022年10月20日 上午5:08。
转载请注明:Java基础——this和super关键字 | 胖虎的工具箱-编程导航

相关文章

暂无评论

暂无评论...