java学习之super用法

本文详细介绍了Java中的super关键字用法,包括如何使用super调用父类属性、方法及构造器,并通过具体实例展示了super与this的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

super:可以用来修饰属性、方法、构造器

1)当子类与父类中有同名的属性时,可以通过“super.此属性”显式的调用父类中声明的属性。若想调用子类的同名的属性“this.此属性”。

2)当子类重写父类的方法以后,在子类中若想再显式的调用父类的被重写的方法,就需要使用“super.方法”。

3)super修饰构造器,通过在子类中使用“super(形参列表)”来显式的调用父类中指定的构造器。
注意:在构造器内部,”super(形参列表)”必须要声明在首行!
注意:在构造器内部,“this(形参列表)”或者“super(形参列表)”只能出现一次!
注意:当构造器中,不显式的调用“this(形参列表)”或者“super(形参列表)”其中任何一个,默认调用的是父类空参的构造器!

super() 和this()很像只不过 super是父类,this是用在当前类中。

    public static void main(String[] args) {
            //student st = new student();
           // st.show();
            student s1 = new student("小东东",12);
            s1.show();
    }

结果是:

这是person空参的构造器
这是子类的属性:张小明1
这是子类的属性:11002
这是父类的属性:学习第一名
这是父类的属性:1000
这是子类的方法:张小明1
这是子类的方法:11002
这是父类的方法:学习第一名
这是父类的方法:1000

person 类

public class person {
    public String name;//称号
    int id;//序号
    //构造
    public person(){
        System.out.println("这是person空参的构造器");
        name = "学习第一名";
        id = 1000;
    }
    //构造
    public person(String name, int id) {
        this.name = name;
        this.id = id;
    }
    public void  setName(String name){
        this.name = name;
    }
    public void setId(int id){
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public int getId() {
        return id;
    }
}

student - 类

public class student extends person {
    public String name;//学生姓名
    int id;//学生学号

    public student(){
        //super();//构造父类
        this.name = "张小明";
        this.id = 1002;
    }
    public student(String name,int id){
        //super(name,id);//构造父类
        this.name = "张小明1";
        this.id = 11002;
    }
    public void setname(String name){
        this.name = name;
    }
    public void setid(int id){
        this.id = id;
    }
    //重写父类里的getName
    public String getName() {
        return name;//获取到当前 张小明
    }
    public int getId() {
        return id;//获取到当前 id
    }
    public void show(){
        System.out.println("这是子类的属性:"+this.name);
        System.out.println("这是子类的属性:"+this.id);
        System.out.println("这是父类的属性:"+super.name);
        System.out.println("这是父类的属性:"+super.id);
        System.out.println("这是子类的方法:"+getName());
        System.out.println("这是子类的方法:"+getId());
        System.out.println("这是父类的方法:"+super.getName());
        System.out.println("这是父类的方法:"+super.getId());
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值