继承:
1.什么是继承
类和类之间的关系,被继承的类称为父类(super Class),继承父类的类称为子类
父类:又称超类/基类/元类/祖先类/上层类
子类:又称后代类/继承类
对于父类所有的东西(属性/方法),子类都可以拥有
2.继承的语法
父类语法:
public class A{
}
子类语法:
public class B extends A{
}
3.
注意:
- extends表示继承
- java在类层次上只支持单继承------即一个类只能有一个直接父类
- 父类的属性和方法,子类都拥有,但是不一定能使用.
父类的私有属性,子类不能直接访问- 构造方法不能继承,
- 如果子类自定义了和父类重名的属性,会直接覆盖,重名的方法可能覆盖,可能重载
- 一个类可以有很多子类
- 子类之间的关系是兄弟关系,互不干涉也无法继承
- 对于父类的私有属性,子类拥有但是不能直接访问,可以使用继承下来的父类中公有的访问器方法访问
继承的本质:
提高类和类之间的代码复用性
※※※辟谣!!!
- 子类只能继承父类所有非private的属性和方法---------------错误!!!
- 构建子类的对象的时候先执行父类的构造方法-------------错误!!!
- java是一种堆栈结构--------错误!!!
4.方法的重写(子类方法对于父类方法的重新实现)
注意:
- 1)如果子类不重写父类方法,子类对象直接使用父类的方法
- 2)如果子类重写父类方法,子类对象使用重写后的方法
- 3)重写方法的过程中,方法名和参数列表不允许修改,访问限定符的范围允许放大
5.重写和重载的区别※※※
1)重写只能发生在两个类之间,重载可以在一个类的内部
2)重写是对父类方法的重新实现,父类方法在子类对象中无法调用,重载是对方法的延伸实现,使方法更具多样性
3)@Override
注释(注解),方法重写的标志,一般对于重写的方法需要在方法上添加,如果不添加也可以,但不规范
4)重写的方法和原方法的方法名以及参数列表完全一致;重载要求方法名一致,参数列表不一致
6.在子类中调用父类的方法:
父类中的方法是普通的方法,该方法的调用需要使用父类的对象进行调用
用super来调用父类的方法
- super类似于this,表示当前对象所继承的父类对象的引用
- super负责在子类重写父类的方法的时候调用父类的方法
7.关于子类对象的构建过程(面试)※※※
- 第一步:先执行子类的构造方法
- 第二步:在子类构造方法的第一行跳转到父类的构造方法开始执行
隐式的调用super();
------>代表父类的构造方法,只能写在子类构造方法的第一行,也可以不写,但是不写默认也会生成- 第三步:父类的构造方法执行完毕之后,回到子类的构造方法继续执行
- 第四步:子类的构造方法完成之后,子类的对象构建完毕
继承的本质:在构建子类对象的过程中完整的执行了父类的构造方法,意味着在此过程中构建了一个父类的对象,在执行子类构造的过程中,父类的对象被拆分,父类的属性和方法拼接生成子类的对象
8.Object
Object是java设计者提供的一个类,该类是除了自身之外其他所有类的父类
如果一个类extends指定了父类,Object是当前类的间接父类
如果一个类没有指定父类,Object是当前类的直接父类
ctrl+shift+t