super关键字

super 是 Java 的一个关键字,本身并不表示某个父类对象

super 是一个引用,指向当前对象的父类(或超类)的部分

super 可以出现在构造方法、实例方法中,但不可以出现在类方法中

一、子类构造方法中,调用父类的构造方法

子类所有构造方法中默认赠送一个super();

父类构造方法先执行,子类构造方法再执行

父类没有无参构造方法时,子类构造方法中必须显示使用super调用父类构造方法

super(…) 和 this(…) 只能出现构造方法中,必须是构造方法的第一个语句,两者不共存

// 父类
public class Fu {
    public Fu() {
        System.out.println("Fu constructor execute...");
    }
}

// 子类
public class Zi extends Fu {
    public Zi() {
        System.out.println("Zi constructors execute...");
    }
}

// 测试类
public class Test {
       public static void main(String[] args) {
        Zi zi = new Zi();
    }
}

在这里插入图片描述
二、子类实例方法中,访问隐藏的成员变量和方法

如果子类可以继承父类的某个方法,那么子类就有权利重写这个方法

静态成员不会被继承,子类可以重新定义静态成员,这被称为隐藏(hiding)

【成员变量隐藏】:子类成员变量的名字和父类成员变量的名字相同,声明的类型可以不同

【成员方法隐藏】:子类定义一个与父类具有相同名称和参数列表的方法,子类方法将隐藏父类方法

// 父类
public class Fu {
    int num = 10;
    static String str = "hello";

    public void methodInstance() {
        System.out.println("Fu methodInstance...");
    }
    
    public static void methodStatic() {
        System.out.println("Fu methodStatic...");
    }
}

// 子类
public class Zi extends Fu {
    // 成员变量隐藏
    double num = 20;
    static String str = "world";
    
    // 成员方法隐藏
    @Override    // 实例方法重写 
    public void methodInstance() {
        System.out.println("Zi methodInstance...");
    }
    
    // @Override // 静态方法不存在重写,只能隐藏 
    public static void methodStatic() {
        System.out.println("Zi methodStatic...");
    }

    public void methodZi() {
        System.out.println(num);
        System.out.println(str);
        System.out.println(super.num);
        // System.out.println(super.str); // hello
        System.out.println(Fu.str);       // 推荐使用类名访问静态成员
       
        methodInstance();
        super.methodInstance();
        
        methodStatic();
        // super.methodStatic();         // Fu methodStatic...
        Fu.methodStatic();               // 推荐使用类名访问静态成员
    }
    
    public static void main(String[] args){
        Fu fu = new Zi(); // 向上转型
        // 【静态成员属于类,而不是类的实例】
		fu.methodStatic(); // Fu methodStatic... 
		Zi.methodStatic(); // Zi methodStatic...
    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鱼悠奕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值