注:本次所讲的继承是为重写做铺垫
一、继承
1、为什么?
在java语言中为了简化相似类之间的相同属性及方法的书写,java语言中采用继承来简化代码;
2、是什么?
继承在java语言中是通过关键字extends实现的,假定我们定义两个类 Father、Son;若使Son继承Father类中的部分方法和属性——采用
public class Son extends Father
此时,Son即可使用在Father类中的一些属性:如使用public声明的变量或者方法
3、其他
一、Object类是所有类的父类,所以在非显式继承关系的类实则是继承了Object类;
二、若在子类中存在覆盖的情况,使用关键字super在非静态代码块或方法调用父类的属性及方法;而在静态代码块或者静态方法中这通过对象或者类调用父类中的属性或方法;
三、如果累被final修饰,则该类不可以被继承;
四、被权限控制符 private修饰的 方法或者属性不可以被继承;
二、重写;
1、为什么重写?
子类在继承父类的方法或者属性时,父类的部分方法与属性不能准确地描述子类,所以此时要使用重写来重新定义子类的属性与方法;
2、重写到底是什么?
如图所示,Son继承了Father类,可son类中的我们不能照搬Father中的方法,所以如图,可以采用覆盖的方式重写,这种方式成为重写;
3、重写要注意什么?
(1)、@Override在重写的方法进行标,注意:若是父类中并没有该方法而使用会出现错误;
(2)、继承的权限控制:
权限的开放等级为: public>protected>friendly(默认)>private ; 子类在继承父类的时候其权限必须大于等于父类的权限:正是因为子类的权限(friendly)低于父类,导致出现了错误;
(3)、返回值
一、当父类返回值为基本数据结构时,子类重写父类的方法的返回值必须与父类相同
二、当父类方法的数据结构为类的引用类型的时候,其子类的返回值类型为该类的数据结构的子类;(Object为所有类的父类)
(4)、静态方法
一、当父类的方法为静态方法时,其子类不可重写;(仅继承)(出错点)
二、子类重写后的不可将方法改为静态方法
三、对于使用final修饰的父类方法仅可以继承不可以重写;(出错点)
这些就是我所理解的继承与重写