模板
一个流程 一个体系 如果使用这个流程或者体系 只需修改其中的一小部分 大部分不需要动
下面举个例子:一个公司的找人流程
public class Demo01 { public static void main(String[] args) { LOStudy lsk= new LSK(); lsk.study(); } } abstract class LOStudy{ //学习方法 public void study() { System.out.println("报名应聘"); //选择学科需要变化 声明一个方法 //调用抽象方法 chooseSubject(); System.out.println("上岗工作"); } //声明抽象方法 public abstract void chooseSubject(); } class LSK extends LOStudy{ //重写父类的抽象方法 @Override public void chooseSubject() { // TODO Auto-generated method stub System.out.println("应聘开发工程师"); } } class PQ extends LOStudy{ //重写父类的抽象方法 @Override public void chooseSubject() { // TODO Auto-generated method stub System.out.println("测试员"); } }
报名应聘和上岗工作都是不需要动的流程
而求职者选择的工作不一样 所以只需要修改应聘的职位就可以了
模板运用了抽象类 和 继承
可以说模板和抽象类很相似
接口
狭义的:Java的接口 定义方式:interface 接口名 {};其中 interface 是关键词
广义的:一种规范 规范 需要来遵守;
接口特点:1.声明的变量不能改变 相当于一个常量2.接口没有构造方法 使用的是实现 关键词implements
3.接口只能实现不能继续 4.声明抽象方法的时候用 public abstract
下面是接口的简单的书写样式
public class Demo03 { public static void main(String[] args) { InterB b= new InterBImpl(); b.fun(); System.out.println(InterB.num1); } } interface InterB{ public static final int num1=10; public abstract void fun(); } class InterBImpl implements InterB{ public void fun() { System.out.println(num1); System.out.println("我是实现类的fun方法"); } }
抽象类和接口的不同
1.成员变量:
抽象方法可以用变量 也可以有常量
接口只有常量
2.使用方法
抽象类继承
接口实现
3.成员方法
抽象类有抽象方法 成员方法
接口只有抽象方法
4.构造方法
抽象类有构造方法
接口没有
类和类之间的关系
继承关系 单继承 可以多层继承
接口和接口的关系
可以多继续 单继承也可以
interface InterD{ public abstract void fun1(); } interface InterE{ public abstract void fun2(); } interface InterF extends InterD,InterE{ } class InterFImpl implements InterF{ @Override public void fun1() { // TODO Auto-generated method stub } @Override public void fun2() { // TODO Auto-generated method stub } }
接口和类的关系
可以多实现
interface InterB{ public abstract void fun1(); } interface InterC{ public abstract void fun2(); } class TestA implements InterB,InterC{ @Override public void fun2() { // TODO Auto-generated method stub } @Override public void fun1() { // TODO Auto-generated method stub } }