继承

继承和super关键字

继承的好处和弊端
继承的好处
  • 提高了代码的复用性
  • 提高了代码的维护性
  • 让类与类之间产生了关系,是多态的前提
继承的弊端
  • 类的耦合性增强了
Java中类的继承特点
  • Java只支持单继承(一个子类只能有一个父类,一个父类是可以有多个子类),不支持多继承。

    有些语言是支持多继承,格式:extends 类1,类2,…

  • Java支持多层继承(继承体系)。

  • Object 是我们Java继承体系当中的顶层父类,所有的类都是直接或间接继承自他。

继承的注意事项和什么时候使用继承
继承的注意事项
  • 子类只能继承父类所有非私有的成员(成员方法和成员变量)。私有的成员,子类不能继承。
  • 子类不能继承父类的构造方法,但是可以通过super关键字去访问父类构造方法。在你初始化子类对象时,会调用父类构造来完成父类数据的初始化。
  • 不要为了部分功能而去继承
什么时候使用继承
  • 继承其实体现的是一种关系:“is a” .
  • 如果有两个类A,B。只有他们符合A是B的一种,或者B是A的一种,就可以考虑使用继承。
继承中成员变量的关系
  • 子类中的成员变量和父类中的成员变量名称不一样

  • 子类中的成员变量和父类中的成员变量名称一样

    在子类中访问一个变量的查找顺序(“就近原则”)

    1. 在子类的方法的局部范围找,有就使用
    2. 在子类的成员范围找,有就使用
    3. 在父类的成员范围找,有就使用
    4. 如果还找不到,就报错
this和super的区别和应用
this和super的区别
  • this 代表的是本类对象的引用
  • super 代表的是父类存储空间的标识(可以理解成父类的引用,可以操作父类的成员)
this和super的使用
  • 调用成员变量
    • this.成员变量 调用本类的成员变量
    • super.成员变量 调用父类的成员变量
  • 调用构造方法
    • this(…) 调用本类的构造方法
    • super(…) 调用父类的构造方法
  • 调用成员方法
    • this.成员方法 调用本类的成员方法
    • super.成员方法 调用父类的成员方法
继承中构造方法的关系

子类中所有的构造方法默认都会访问父类中空参数的构造方法

因为子类会继承父类中的数据,可能还会使用父类的数据。

所以,子类初始化之前,一定要先完成父类数据的初始化。

每一个构造方法的第一条语句默认都是:super()

Object类没有父类了。

继承中构造方法的注意事项

父类没有无参构造方法,子类怎么办

  • 在父类中添加一个无参的构造方法

  • 子类通过super去显示调用父类其他的带参的构造方法

  • 子类通过this去调用本类的其他构造方法

    本类其他构造也必须首先访问了父类构造

    super(…)或者this(….)必须出现在第一条语句上

案例演示
class Fu {
    static {
        System.out.println("静态代码块Fu"); //1
    }

    {
        System.out.println("构造代码块Fu"); //3
    }

    public Fu() {
        System.out.println("构造方法Fu"); //4
    }
}

class Zi extends Fu {
    static {
        System.out.println("静态代码块Zi");//2
    }

    {
        System.out.println("构造代码块Zi"); //5
    }

    public Zi() {
        super();
        System.out.println("构造方法Zi"); //6
    }
}

class Test {
    public static void main(String[] args) {
        Zi z = new Zi(); //请执行结果。
    }
}

运行结果

静态代码块Fu
静态代码块Zi
构造代码块Fu
构造方法Fu
构造代码块Zi
构造方法Zi
继承中成员方法关系
  • 当子类的方法名和父类的方法名不一样的时候

  • 当子类的方法名和父类的方法名一样的时候

    通过子类调用方法:

    • 先查找子类中有没有该方法,如果有就使用
    • 再看父类中有没有该方法,有就使用
    • 如果没有就报错
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值