继承:面向对象的三大特征之一,可以使得子类具有父类的属性与方法,还可以在子类中重新定义,追加属性和
方法
(另外两大特征是封装与多态)
格式:
public class 子类名 extends 父类名{
}
继承的好处:提高了代码复用性(多个类相同的成员可以放在一个类中);提高了代码维护性(若方法需要修改
,只需改一处)
继承的弊端:让类与类产生了关系,增强了类的耦合性,父类发生改变时子类实现也不得不跟着变化,削弱了子
类的独立性
继承使用条件:类A是类B的一种或类B是类A的一种(比如苹果与水果,猫和动物),不能滥用
(并且只继承一个类)(但是支持多层继承)
变量访问特点:先子类局部,再子类成员,最后才是在父类中寻找(子类与父类有相同的变量,生效子类的)
方法访问特点:先子类成员,之后才是在父类中寻找
继承中构造方法的访问特点:子类所有构造方法默认会访问父类的无参构造方法(子类会继承乃至使用父类的数
据,故子类初始化前一定要先完成父类数据初始化;每个子类构造方法的第一条语句默认super()(super();
zi z=new zi();))(若父类无无参构造方法被注释,子类构造方法会报错,但是可在子类构造方法中加一个
super(参数)构造带参(父类构造方法表现为带参)构造方法) //推荐,自己给出无参构造方法
super:父类存储空间的表示(可以理解为父类对象引用)
父类私有方法无法被继承(子类也无法重写父类私有方法),子类方法访问权限不能低于父类方法
方法重写:子类出现了和父类一模一样的方法声明
应用:子类需要父类的功能,而功能主体子类有自己特有的内容时,可以重写父类的方法,这样沿袭了父类的功能
又定义了子类特有的内容
@Override:一个注解,帮我们检查重写方法的方法声明的正确性