继承
继承的概述、优点、格式
什么是继承
生活中的继承
先有爸爸,后有儿子,儿子继承爸爸的财产。
Java中的继承
和生活中的继承类似,子类会自动拥有父类的内容。
Java中如何使用继承
把子类共性内容抽取到一个类中,子类继承父类。
继承的优点
u减少了代码冗余,提高了代码的复用性。
有利于功能的扩展,子类继承父类就得到了父类的功能
继承的格式
public class 子类名 extends 父类名 {
}
什么时候使用继承?
继承体现的关系:is…a的关系,子类是父类的一种。
例如:狗和动物
子类中无法使用的内容
1.父类的构造器不会继承到子类中
因为构造器名称要和类名相同,而子类和父类类名不一样,父类的构造方法不能继承到子类中来使用。
2.父类私有的内容子类不能使用
父类私有的内容子类会继承保存,private,
Java中继承的特点
①Java只支持单继承
②Java支持多层继承
继承后成员变量的访问特点
在子类方法中访问一个变量满足:就近原则
1.先找子类局部变量
2.然后找子类成员变量
3.然后找父类成员变量
如果子父类中,出现了重名的成员变量,会优先使用子类的,此时如果一定要使用父类的怎么办?
可以通过super关键字,指定访问父类的成员。
方法重写
什么是方法重写?
子类中对父类已有的方法重新写一遍
方法重写的应用场景
当子类和父类有相同的功能,但父类的功能不满足子类的需求时,子类可以重写父类中的方法
Override注解作用
@Override是放在重写后的方法上,检验该方法是否是重写方法,加上该注解后如果重写错误,编译阶段会出现错误提示。建议重写方法加上@Override注解,代码安全!
方法重写注意事项和要求
①是子类和父类之间的事情
②方法名要相同
③参数列表要相同
④返回值类型要相同
⑤子类重写方法的权限要大于等于父类方法的权限(暂时了解 :private < 缺省 < protected < public)
构造器中访问的特点
继承中构造器的访问特点
子类中所有的构造器默认都会先访问父类中的无参构造器,再执行自己。
为什么要先执行父类构造器
因为子类会继承父类中的数据,可能还会使用父类的数据。所以,子类初始化之前,一定要先完成父类数据的初始化。
子类构造器如何调用到父类构造器
子类构造器的第一行语句默认都是:super(),不写也存在。
this和super
this:代表本类对象的引用。
super:代表父类存储空间的标识可以理解为父类对象引用
抽象方法
抽象方法的格式和作用
抽象方法概念
没有方法体的方法
抽象方法的格式
public abstract 返回值类型 方法名(参数列表);
抽象方法场景
父类知道子类一定要完成某个功能,但是每个子类具体的情况都不一样,
父类的该功能就可以定义成抽象方法。
抽象类
—>抽象方法必须放在抽象类中。
抽象类格式
public abstract class 类名 {}
理解抽象方法的格式和作用
抽象类的使用步骤
①定义类继承抽象类
②重写抽象方法
③使用子类对象
抽象类设计目的
抽象类不能创建对象,
让子类继承抽象类,重写抽象方法。
抽象类的注意事项
①抽象方法必须放在抽象类中,抽象类中可以没有抽象方法。
②子类必须重写抽象类中的所有抽象方法,如果子类只重写一部分抽象方法子类还是抽象类