Java继承详解,看这一篇就够了
文章目录
面向对象三大特征:
- 封装
- 继承
- 多态
继承是面向对象的三大特征之一
继承概念:
- 从已有类派生出新的类
- 已有类称为父类(基类/超类),新类称为子类(派生类)
- 子类对于父类的关系就是继承
继承作用:
- 如果多个类有共同的成员变量和成员方法,将他们抽取到另一个类(父类)中,再让多个类去继承这个父类,这些子类就可以获取到父类的成员变量和成员方法。
继承使用extends关键字:
- 作用:子类继承父类时使用
- 定义位置: 子类类名后
- 格式:
权限修饰符
class子类类名
extends父类类名
{}
继承的特点:
Java中类的继承的特点:
- 只支持单继承,不支持多继承
- 支持多层继承
注意
:Java中所有类都直接或间接的继承自Object类
继承关系中成员变量的特点:
继承中成员变量的特点:
- 子类只能获取父类的
非私有
成员 - 就近原则(同名局部变量,本类变量,父类变量的使用顺序)
- 有局部变量则使用局部变量
- 没有局部变量,则使用本类成员变量
- 没有局部变量和本类成员变量,使用父类成员变量
- 没有局部变量,本类成员变量和父类成员变量,则报错
子类父类中存在同名成员变量或方法时,如果区分使用?
- this:使用本类中成员方法或变量,
this.name
- super:使用父类中的成员方法或变量
super.name
继承关系中成员方法的特点
方法的重写
override
,重写,重新编写,也叫做覆写,覆盖
在继承关系中,子类的一个方法和父类的一个 方法声明完全一样(权限要大于等于),则认为子类重写了父类的这个方法
此时子类调用该方法时调用的时子类中自己重写后的方法,而不是父类中的方法
重写的特点:
子类对象调用一个方法时:
- 子类中重写了这个方法,则调用子类的重写方法
- 子类 中没有这个方阿飞,则调用父类的
- 父类中如果没有,报错
方法重写(override)与方法重载(overload)的区别?
- 定义位置不同:
- 重载: 同一个类中
- 重写: 存在继承关系的子父类当中
- 方法定义不同:
- 重载: 方法名相同, 参数列表不同. 与返回值, 形参名, 方法体无关
- 重写: 方法声明完全一模一样(权限要大于等于), 与方法体无关
方法冲写的应用场景和注意事项
方法重写应用场景:
- 当父类的方法不能完全满足子类使用,这是子类可以重写父类的方法
- 在重写方法中使用super.方法名()调用父类方法,既可以保留父类方法功能,也能实现自身特有 功能
@Override注解
- 用于约束被注解的方法必须是重写父类的方法,如果父类没有这个方法则报错
- 注意字母O是
大写
方法重写注意事项:
- 父类private方法不能重写
- 子类重写 方法的权限必须大于等于父类方法的权限
this和super的区别
this
关键字作用:当前类的对象的引用
语句作用
- 调用子类的成员变量
- 调用 子类的成员方法
- 在子类构造方法第一行调用子类的其他构造方法:this();
- 当子类没有父类的某个成员变量或成员方法时,this也可以调用父类的成员变量或成员方法(因为子类继承了父类成员)
super
关键字总用:当前类的对象的父类的引用
语句作用:
- 调用父类成员变量
- 调用父类成员方法
- 在子类构造方法第一行调用父类的构造方法super();
注意:this()和super()用于调用构造方法时,必须在构造方法第一行调用
继承的优缺点
优点
- 提高了代码复用性
- 提高代码可维护性
缺点:
类的耦合性增加