为什么需要继承:
=> 继承就可以解决代码复用的问题
继承的基本介绍:
继承的使用细节:
1.子类继承了所有的属性和方法,但是私有属性和方法不能在子类直接访问,要通过公共的方法去访问
解决, 提供公共的方法返回:
2.子类必须调用父类的构造器,完成父类的初始化
以上图可以看到, 明明只创建了子类对象, 走的是在类的无参构造器, 但是父类的也被调用了 = > 即子类必须调用父类构造器, 完成父类的初始化
3.当创建子类对象时,不管使用子类的哪个构造器,默认情况下总会去调用父类的无参构造器,如果父类没有提供无参构造器,则必须在子类的构造器中用 super 去指 定使用父类的哪个构造器完成对父类的初始化工作,否则,编译不会通过[举例说明]
如果父类没有提供无参构造器:
子类会报错(报错这里没有一个默认的构造器):
解决: 需要初始化父类构造器(必须放在第一行)
4.super在使用时,必须放在构造器第一行(super只能在构造器中使用)
5.super()和 this()都只能放在构造器第一行,因此这两个方法不能共存在一个构造器
6. java所有类都是Object类的子类
7.父类构造器的调用不限于直接父类! 将一直往上追溯直到Object类(顶级父类)
8.子类最多只能继承一个父类(指直接继承),即java中是单继承机制。 思考:如何让A类继承B类和C类?[可以让A类继承B类, B类继承C类]
9.不能滥用继承,子类和父类之间必须满足 is-a【是】的逻辑关系
例如人是音乐吗, 不是便不能使用继承
继承的本质