模板方法模式
使用场景说明:当系统中同一个功能多处在开发,大部分功能都一样,而只有小部分功能不同时
实现步骤:把功能定义成一个所谓的模板方法,放在抽象类中,模板方法中只定义通用且能确定的代码。然后将不能决定的功能定义为抽象方法让具体子类去实现
public abstract class Student {
//这里建议用final修饰,因为这是模板,不能让人重写
public final void write(){
System.out.println("\t\t\t《我的梦想》");
System.out.println("你的梦想是什么样的呢?");
//开头和结尾都相同,但正文部分不同。
//所以,模板方法将正文定义为抽象方法writeMain(),由不同的子类来自己完成
System.out.println(writeMain());
System.out.println("这就是我的梦想");
}
模板方法建议用final修饰,因为模板方法是给子类直接使用的,不是让子类重写的。因此加上final防止子类重写模板方法。
接口
接口的用法:
用来被类实现,实现接口的类称为实现类,实现类可以理解为所谓的子类。
接口可以被类单实现,也可以被类多实现。
修饰符class 实现类 implements 接口1,接口2,接口3...{
}
接口实现的注意事项:一个类实现接口,必须重写完全部抽象方法,否则这个类需要定义为抽象类。
接口的关系:
类与类的关系:单继承
类与接口的关系:多实现
接口与接口的关系:多继承,一个接口可以同时继承多个接口
接口的注意事项
接口不能创建对象
一个类实现多个接口,多个接口中有同样的静态方法不冲突。
一个类继承了父类,同时又实现了接口,父类中和接口中有同名方法,默认用父类的。
且在定义时,继承需放在接口实现之前。
一个类实现了多个接口,多个接口中存在同名的默认方法,不冲突,这个类重写该方法即可。
一个接口继承多个接口,是没有问题的,如果多个接口中存在规范冲突则不能多继承。