java中关于继承的总结

java中关于继承的总结

java中提供了一个关键字extends,用这个关键字,可以让一个类继承另一个类。

注意事项

  1. java不支持多继承,但支持多重继承。

  2. 子类只能继承父类的非私有成员。

  3. 在创建子类时,一定要先将父类创建出来,虚拟机会在子类的构造器第一行默认调用**super()(父类的无参构造器)来创建其父类。当不希望用父类的无参构造器创建时,可以在子类构造器的第一行(必须是第一行)使用super(参数列表)(父类的有参构造器)**来创建父类。

  4. 第3点注意事项说明,创建一个子类,其祖先类都会被创建出来,这说明其祖先类的所有成员都在内存中存在,虽说子类只能继承其父类的非私有成员,但其私有成员存在于该子类的隐含内存(此为笔者定义名称),称隐含继承

  5. 所有类在不显式继承任何类时,默认继承Object类。

  6. 父类的protected成员继承到子类,成为子类的成员时,访问权限会变为private

  7. 父类的default成员(不加任意修饰符时默认的访问权限)、public成员,继承到子类,成为子类的成员时,访问权限不变。

  8. 当子类不满意父类继承来的方法时,可以进行方法重写,重写的方法的返回类型,参数列表,方法名与父类方法一致,在重写时,一般在前加@Override注解。此时若还想使用父类的原方法,可使用super.原方法名(参数列表)调用。

  9. super关键字代表父类,只能在定义类的内部使用。

注意事项第4点举例:

首先定义一个父类Fu,它有一个私有成员name,和其对应的公开的get,set方法。

package com.gezishan.Extends;

public class Fu {
    private String name;

    public Fu() {
    }

    public Fu(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

在同一包内定义一个子类Zi继承Fu类。

package com.gezishan.Extends;

public class Zi extends Fu{
    
}

在同一包内定义Main类,在Main函数中创建子类。

package com.gezishan;

public class Main {
    public static void main(String[] args) {
		Zi zi=new Zi();
        System.out.println(zi.getname());  //通过公有方法获取name值
        zi.setname("格子衫");  //通过公有方法改变name值
    }
}

上述例子说明,虽然父类的私有成员不能继承到子类,成为子类的成员,但子类能调用父类遗传来的公有成员方法获取和改变其私有成员,就好像也拥有其私有成员一样。
如有补充或错误,欢迎批评指正!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值