/声明一个抽象类/
package com;
abstract class AbstractClass {
/**
* 抽象方法,abstract关键字标识,只声明,并不实现,继承此抽象类必须实现此方法
*/
protected abstract void abstractMethod(String param);
/**
* 具体方法,声明并实现,继承此抽象类不需实现此方法
*/
public void concreteMethod(String param) {
System.out.println("这是一个具体方法,param====>"+param);
}
/**
* 模板方法,整个算法的骨架
*/
public void templateMethod(String param) {
abstractMethod(param);
concreteMethod(param);
}
}
/声明一个子类/
package com;
public class childClass2 {
public void bond(AbstractClass abstractClass,String param){
abstractClass.templateMethod(param);
}
}
/测试类/
package com;
public class Test {
public static void main(String[] args) {
new childClass2().bond(new AbstractClass( ) {
@Override
protected void abstractMethod(String param) {
System.out.println("子类实现父类抽象类中的抽象方法");
}
},"参数");
}
}