继承
继承的概述
继承的好处:共性抽取,提高代码的复用性
一旦发生继承关系:
子类可以使用父类的(非private修饰的)变量和方法(可继承)
子类也可以有自己独有的变量和方法
继承的格式
public class 子类 extends 父类{
}
//遵循 is a ---> 子类是一个父类
//子类和父类是一个相对的概念
继承中成员变量的访问特点
子类和父类有同名的成员变量时谁优先:
等号左边是谁,就优先用谁,没有则向上找。
区分子类方法中同名的三种变量
局部变量 直接使用
子类成员变量 this
父类成员变量 super
继承中成员方法的访问特点
对象创建的是谁,就用谁的方法,如果没有则向上查找。
继承中方法的覆盖重写注意事项
重载:在同一个类中,方法名相同,参数项不同。和修饰符返回值无关。
覆盖重写:
在继承关系下,方法名相同,参数列表相同。
子类方法的返回值和父类方法的返回值相同或者是父类返回值的子类 //多态
子类修饰符 >= 父类修饰符
public > protected > 默认 > private
当前类中 当前包中 不同包有子父类关系 不同包非子父类
private Y N N N
默认 Y Y N N
protected Y Y Y N
public Y Y Y Y
-
继承中构造方法的访问特点
回顾:
1.如果没有显示的写一个构造方法,那么会默认赠送一个无参数的构造方法
2.如果显示的写了一个构造方法,那么不再赠送
3.构造方法可以重载
在继承关系下,构造方法的特点:
1.在子类的构造方法中,不显示的写,默认会赠送一个super();无参数
super():调用父类无参数的构造方法
2.如果你显示的写了一个super(参数列表);那么不再赠送
3.super(参数列表);必须是第一个语句。
在创建子类对象的时候,父类对象已经先创建出来了。
super关键字的三种用法
super.父类成员变量;
super.父类成员方法(参数列表);
super(参数列表); //只能写在子类的构造方法中
this关键字的三种用法
this.成员变量;
this.成员方法(参数列表);
this(参数列表); //调用本类的其他构造方法
//只能写在构造方法中
//只能是构造方法的第一个语句,不能和super()同时存在
Java继承的三个特点
Java继承是单继承:一个子类只能有一个直接父类
Java是多级继承
一个父类可以有多个子类
抽象
抽象方法和抽象类的格式
public abstract 返回值类型 方法名(参数类表);
public abstract class 类名{}
抽象方法必须写在抽象类中,抽象类中可以有抽象方法,也可以有非抽象方法。
抽象方法和抽象类的使用
抽象类不能直接创建对象,创建子类的对象
子类必须覆盖重写抽象父类的所有抽象方法,除非"子类也是抽象类"。
抽象方法和抽象类的注意事项
a.抽象类不能直接创建对象
b.抽象类可以有构造方法
c.抽象方法必须写在抽象类中,抽象类中可以有抽象方法,也可以有非抽象方法。
d.子类必须覆盖重写抽象父类的所有抽象方法,除非子类也是抽象类