技术问 - 什么是继承

2019-03-06  本文已影响0人  sexyhair

利用继承可以基于已知存在的类够造一新类,继承已存在的类就是复用这些类的方法和域,还可以添加一些新的方法和域,以满足新的需求。被继承的类称作基类(父类),继承父类的类称作派生类(子类)

继承的格式:

class 类名 extends 父类名{}

有继承关系的子父类间的成员变量、成员方法、构造方法之间的关系:

1)成员变量关系

子类的成员变量与父类的成员变量名称相同时,使用变量的原则:就近原则,使用的是子类的成员变量(与多态中的成员变量关系结合理解);

在子类方法中访问一个变量的查找顺序(就近原则):
  A.在子类方法的局部范围查找
  B.在子类的成员范围找
  C.在父类的成员找

2)构造方法关系

this(...)和 super(...)第一要放在构造方法的第一句,否则多次初始化父类数据

3)成员方法关系

子类的成员方法与父类的成员方法的返回值、方法名、参数列表都相同(这种情况也叫方法重写)时,子类的成员方法覆盖父类的成员方法,调用时使用的是子类的方法;若还想调用父类的方法体则使用super.(...)。此时子类的成员方法权限 >= 父类的成员方法权限

继承的几个特征:

JAVA语言不支持多继承
子类只能继承父类所有的非私有成员
子类不能继承父类的构造方法,但是可以通过super关键字去访问父类构造方法。
不要为了部分功能去继承

有继承关系的子父类在加载时的顺序:

类加载时,发现其有父类先加载父类,再加载子类。静态修饰内容是随着类的加载而加载的,所以当子父类中有static时,static是最先加载的;类中有静态代码块、构造代码块、构造方法,则执行顺序是:静态代码块>构造代码块>构造方法

阻止继承

想要类不能被继承,使用final修饰

final class 类名 extends 父类名{}
上一篇 下一篇

猜你喜欢

热点阅读