学习目标
- 面向对象回顾
- 面向对象的三大特征之一:继承
- 继承的格式
- 继承的特点
- 继承中成员的访问特点
- 抽象类
- 抽象类的格式
- 抽象类的作用
- 抽象类的注意事项
- 设计模式-模板方式
-
1.继承
格式:修饰符 calss 类名 extends 父类名{ }
举例 : public class Student extends People{ … }3.1为什么学习继承
继承是将多个相同属性抽取到一个单独的父类中,那么子类再调用这些
3.3 继承的好处 ?
- 提高代码的复用性
- 提高代码的维护性
-
3.4 继承的特点
Java只支持单继承 , 不支持多继承 , 但是可以多层继承
- 简单理解 : 一个儿子只能有一个亲爹
为什么不支持多继承 ?
成员变量
- 访问特点-就近原则 : 局部有访问局部的 , 局部没有访问本类成员的 , 本类成员没有访问父类非私有成员
- 成员方法
- 访问特点-就近原则 : 子类有调用子类的 , 子类没有调用父类的
- 构造方法
- 子类所有的构造方法都会默认去访问父类的空参数构造方法
- 每个构造方法中默认第一条语句都会有一个super()
如果父类没有空参数构造 , 那么子类如果进行给父类初始化 ?
- @Override是放在重写后的方法上,作为重写是否正确的校验注解,加上该注解后如果重写错误,编译阶段会出现错误提示。建议重写方法都加@Override注解,代码安全,优雅!
- 重写的方法与被重写的方法 , 名字 , 参数列表需要保持一致
- 子类和父类的方法声明一样 , 方法体中的内容重新定义
子类重写父类方法时,子类方法访问权限必须大于或者等于父类方法权限(public,默认, protected,private),保持一致即可
3.7 this和super关键字的区别
调用变量
- this.变量名 : 访问本类的成员变量
- super.变量名 : 访问父类的成员变量
- 调用方法
- this.变量名 : 访问本类的成员方法
- super.方法名(…): 访问父类的成员方法
调用构造方法
抽象类其实就是为抽象方法提供存活的空间 , 需要在类的前面加上上abstract关键字进行修饰
-
4.1 抽象方法
4.2 抽象类的注意事项
抽象方法和抽象类必须使用abstract关键字进行修饰
- 抽象类中可以抽象方法 , 也可以有非抽象方法 , 抽象方法必须存在抽象类中
- 抽象方法的作用 : 让子类必须实现此功能
- 非抽象方法的作用 : 让子类去继承此功能
- 抽象类不能实例化(创建对象)
抽象类的子类
可以把抽象类 , 看做一个模板 , 非抽象方法理解为模板的通过格式 , 抽象方法是使用者具体完成的业务逻辑
- 模板已经定义好了通用的结构 , 使用者只要关心自己需要的那部分实现的功能即可
public abstract class Template {
public void write() {
System.out.println(“<<我的爸爸>>”);
// 正文
body();
System.out.println(“啊~这就是我的爸爸.”);
}
public abstract void body();<br />}<br />public class Tom extends Template {<br /> @Override<br /> public void body() {<br /> System.out.println("那是一个秋天 , 风儿那么缠绵 ,记忆中,那天爸爸骑车送我放学回家 , " +<br /> "我的脚卡在了自行车链中 , 爸爸蹬不动, 他就站起来蹬!"<br /> );<br /> }<br />}<br />public class Test {<br /> public static void main(String[] args) {<br /> Tom tom = new Tom();<br /> tom.write();<br /> }<br />}
