首页 > 代码库 > java接口和抽象类

java接口和抽象类

(一)接口和抽象类

      作用:

1 利于设计和实现分工;

2 体现代码的层次性;

  (二)钩子方法或者叫模板方法方式

    概念:23中设计模式中的一种,在代码执行的中间阶段,加入钩子,使得我们根据需要调用子类的不同方法,就行我们日常生活中的插座一样,如果你插上去的是电饭煲,那当然这个钩子就充当了煮饭的作用;如果你用来冲热水袋,你们它就充当了加热取暖的作用,我们在我们的某一个功能实现的过程中加入这样的钩子,那么这就是模板方法模式,它可以根据子类对这个方法(比如对于奔跑这个方法,不同子类不一样)来动态调用不同方法。

举例:

    父类和子类:

 

package TestInterface;

public interface AnimalHook {
int MAX_WEIGHT=20000;
int MIN_WEIGHT=1;
String MAX_AGE="20000岁";

public abstract void run();
}

interface PlantHook{
void grow();
}

/**
* 接口多重继承,增加了灵活性,但是并没有增加复杂性,这不是类的多重继承,这样大大增加了接口书写的灵活性,易于我们灵活编程
* @author Administrator
*
*/
interface Biological extends AnimalHook,PlantHook{

}

class Bird1 implements AnimalHook{
public int flyHeight=33333;
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("鸟类的飞行方法");
}

}
class Mamal1 implements AnimalHook{
public void run(){
System.out.println("哺乳动物的飞行方法");
}
}

功能实现类:

package TestInterface;

public class TestAnimalRun {
/**
* 这个方法用于测试不同动物赛跑的过程中,模拟动物在整个过程中是如何来完成赛跑的,中间赛跑的时候所执行的动作是不一样的
* 这是23中设计模式中的回调模式或者叫钩子方法或者叫模板方法方式
* @param args
*/
public static void run(AnimalHook p){
System.out.println("动物准备");
System.out.println("枪声响起后");
p.run();//它会根据指向的子类不同,而调用不同的子类方法,看起来像钩子一样,你可以挂不同的子类上去,而调用相应子类方法
System.out.println("到达终点");
}
public static void main(String[] args) {
// TODO Auto-generated method stub
run(new Bird1());//调用鸟类run方法,多态
run(new Mamal1());//调用哺乳动物的run方法,多态
}

}

(三)接口的多重实现

   注意:java中接口是可以多重实现的,但是实体类是不能多重实现的,这是因为接口非常简单,多重实现并没有增加代码的复杂性,相反,它为我们带来了代码的高度灵活性,这就是组合和分离的灵活运用。

java接口和抽象类