接口:提供 常量\抽象方法 的起模板作用的一种规范,具体用法:
public interface Shape {
public final int a=123;
public abstract void zhouchang();
public abstract void mianji();
知乎上,@梅小西 举了个例子,很有意思,我顺便改了下,便于自己理解
我开了家宠物店,先定义个接口,只说明我卖宠物粮食,
public interface PetRestaurt {
public void buy();
}
那要是来了一只狗,我怎么办呢?我得定义个类,说明怎样给卖狗粮给狗
public class DogPet implements PetRestaurant{
//实现接口中的方法,来了狗,卖狗粮
public coid buy(){
System.out.println("来了只狗,出售狗粮")
}
}
要是来了一只猫呢? 那就定义个类,说明卖猫粮的方法
public class CatPet implements PetRestaurant {
//实现接口方法,来了猫,卖猫粮
public void buy() {
System.out.println("来了只猫,卖猫粮");
}
}
你想啊,我是个老板,我只管出货收钱,辨别小猫小狗这种活肯定不是我干的,所以要定义个伙计类,这个伙计用来打杂,告诉我是猫来了,还是狗来了
public class Waiter {
//伙计类定义个方法,来判断动物种类
public void choice(PetRestaurant pet)
{
pet.buy();//调用 相应动物类型的buy方法
}
}
最后,我这个老板终于该出场了,卖东西
public class Boss{
public static void main(String []gun){
//将猫.狗.店小二的类全部实例化,不然怎么用啊
PetRestaurant cat =new CatPet();
PetRestaurant dog = new DogPet();
Waiter xiaoer =new Waiter();
xiaoer.choice(dog);//店小二选择方法默认调用接口的buy抽象方法
xiaoer.choice(cat); //根据输入参数值,调用参数对象所属类,
//如:输入dog,店小二的choice方法就调用了dog代表的对象的类CatPet(),下面的buy方法
}
}
可以看出,如果没有接口里的buy方法,店小二会累死啊