继承
怎样实现继承:1,先提取共有的属性和方法,放到一个类里,这个叫父类、基类、超类
2.编写子类 修饰符 class 子类名 extends 父类名
好处:提高代码的复用性
子类怎么去访问父类成员:
直接用 name
this.资源 this.name
super.资源 super.name
能继承父类的那些资源:
private 只能本类使用
默认(friendly) 只能是本包访问
protected(受保护的) 只能被同包 和不同包子类访问
public(共有的)能被整个项目去访问
不能继承父类的那些资源:
私有的不能被继承
构造方法不能被继承,但是可以被访问
继承是实现形式:显示的继承extends
隐式的继承(什么都不写)
构造访问的实例化过程:父类的属性——>父类构造方法——》子类的属性——>子类的构造方法
(静态)父类的静态属性——》父类静态的代码块——》子类的静态属性——》子类的静态代码块——》父类的属性——>父类构造方法——》子类的属性——>子类的构造方法
super关键字:
访问父类的属性:super.属性名
访问父类的方法:super.方法名
访问构造方法:1.没有使用super去显示的调用父类的构造方法,也没有使用this去显示的调用本类的构造方法,那么默认调用父类的无参构造
2.如果使用super显示调用父类的构造方法,那就直接调用这个构造方法,不去调用父类的无参构造了
3..如果使用this显示调用本类的构造方法,那就直接调用这个构造方法,不去调用父类的无参构造了
4.如果你什么都不写,它会一直往上调用父类,直到Object类的无参构造为止
方法重写
原因:不能满足业务的需求
方法重写 方法重载 --------一定要背会
位置 父子类 同类
方法名 相同 相同
参数列表 相同 不同
返回值 相同或子类 无关
访问修饰符 相同或扩大 无关
抽象类和抽象方法
特点:用abstract修饰的类叫做抽象类
抽象类里可以有抽象方法,也可以没有抽象方法
抽象类不能被实例化,它里边的抽象方法必须被子类重写,否则子类也是抽象类
抽象方法:用abstract修饰的方法叫抽象方法
有抽象方法的类必须是抽象类
抽象方法没有方法体
final
修饰属性:修饰基本数据类型——值不变
修饰引用数据类型——地址不变,里面的属性可以改变
修饰方法:方法不能被重写
修饰类:类不能被继承