Java中super关键字的用法

super:代表本类继承的直接父类当前的对象

super关键字的用法:

1.在子类构造方法中通过super关键字调用这个类的父类的构造方法

·构造方法调用顺序:根基类、...... 、父类的父类、父类、子类

·默认调用无参构造方法

·父类若无无参构造方法,必须在子类构造方法中显式调用父类构造方法,否则编译报错

·只能放在方法的第一行,this与super不能在同一方法中使用(因为this也需要写在方法的第一行,所以this与super不能在同一方法中使用)

代码示例如下:

package oneHundredDayPlan.twoDay;

public class Five {
    String name = "乐悠小码";
    public Five(int a){//有参的构造方法
        System.out.println("这是一个有参的构造方法");
    }
}
package oneHundredDayPlan.twoDay;

public class TestFive extends Five {
    public TestFive(){
        //当父类的构造方法是无参的,那么在子类的构造方法中可以不显示调用。但是当父类的构造方法不是无参的
        //构造方法,那么在子类中必须显示调用父类的构造方法,否则编译报错
        //super的第一种用法就是在子类的构造方法中调用父类的构造方法,且只能放在第一行上
        super(10);
        System.out.println("子类的构造方法");
    }
}
2.当父类的成员和子类的成员名字相同,那么在子类中会将父类的成员屏蔽掉,可以通过super调用父类的成员解决屏蔽问题。

代码示例如下:

package oneHundredDayPlan.twoDay;

public class Five {
    String name = "乐悠小码";
    public void test(){
        System.out.println("父类中的test方法");
    }
}
package oneHundredDayPlan.twoDay;

public class TestFive extends Five {
    String name = "乐悠小码的子类";
    public void test(){
        System.out.println("子类中的test方法");
    }
    public void method(){
        System.out.println(super.name);
        super.test();
        System.out.println("----------------------------");
        System.out.println(name);
        test();
    }

    public static void main(String[] args) {
        TestFive t = new TestFive();
        t.method();
    }
}

 

注:静态方法中不能使用this和super关键字:

· 由于静态方法不属于任何一个具体的对象,而this代表的是当前对象的引用,在静态方法中没有一个特定的对象可以被引用,所以不能使用this关键字。如果在静态方法中使用this,会导致编译错误,因为编译器无法确定this所指代的具体对象。

·同样,因为静态方法是属于类的方法,与特定的对象实例无关。而super关键字通常用于在对象层次结构中,通过子类对象访问父类的成员。在静态方法中,没有对象实例的概念,无法确定要访问哪个父类对象的成员,所以不能使用super关键字。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值