网站首页 > 基础教程 正文
对于很多Java初学者而言,接口很不容易理解,实际上接口只是一个规范,里面的很多方法都是空的。接下来举个例子帮助大家形象的理解接口。
假如我开了一个宠物粮店,并声明称:所有的宠物都可以到我这里买粮食,这就相当于一个接口public interface PetRestaurant {
public void buy();
}
当一只狗看到了,知道自己是宠物,所以它去实现这个接口
public class DogPet implements PetRestaurant {
@Override
public void buy() {
System.out.println("我是狗,我要买狗粮");
}
}当一只猫看到了,知道自己也是宠物,所以也去实现这个接口
public class CatPet implements PetRestaurant {
@Override
public void buy() {
System.out.println("我是猫,我要买猫粮");
}
}
当然,在狗和猫来店之前,我并不知道它们究竟是什么,但是,当它们走进我的店里,我就知道了,它们一个要狗粮,一个要猫粮。因为它们实现了我这个接口,所以都可以买。接下来的这个好比接待顾客的类,也就是店小二,他负责接待实现了宠物店接口要求的所有宠物,这时候传进来一个PetRestaurant 类型的宠物请注意!这个PetRestaurant 是接口public class test {
public void buy(PetRestaurant pet)
{
pet.buy();
}
}
好了,这个时候我这个老板出现了,我可以给它们卖粮食了,相当于测试类
public class Tests {
public static void main(String[] args) {
PetRestaurant dog = new DogPet(); //实例化一个狗,相当于把狗顾客实例化
PetRestaurant cat = new CatPet();//实例化一个猫,相当于把猫顾客实例化
test t = new test(); //实例化一个店小二
t.buy(cat); //把猫交给店小二
t.buy(dog); //把狗交给店小二
}
}
这样运行的结果就是
我是猫,我要买猫粮
我是狗,我要买狗粮
你知道吗 在整个的过程中实际上我这个粮食店老板根本不知道来的到底是狗还是猫,只要我有一个店小二,把这些来的不知道什么动物都交给店小二,店小二就知道怎么卖了,因为这些阿猫阿狗都已经实现了我这个宠物店的接口,店小二就只负责去接待这些实现了接口的动物。这就有了一个好处,假如明天来了一只猴子,只要它实现了我这个接口,我就只管交给店小二去处理就OK啦!
试想一下,假如没有接口该怎么办?来一只狗,我去创建一只狗,来一只猫,我再去创建一只猫,同样要实例化,还要配备专门的店小二去接待,就会相当麻烦。
在Java中接口就是为所有的任务类型提供了一种规范或者说是标准,意思是只要你的任务符合这个标准,我的程序就可以处理。
有任何JAVA问题可以随时咨询远标JAVA培训中心
- 上一篇: Java接口与抽象类:核心区别、使用场景与最佳实践
- 下一篇: Java接口和抽象类的区别
猜你喜欢
- 2025-05-24 Java接口默认方法的奇妙用途
- 2025-05-24 抽象类和接口
- 2025-05-24 详解Java抽象类和接口
- 2025-05-24 拒绝接口裸奔!开放API接口签名验证
- 2025-05-24 每天学Java!Java中的接口有什么作用
- 2025-05-24 Java:在Java中使用私有接口方法
- 2025-05-24 Java接口与抽象类的奇妙差异
- 2025-05-24 Java接口和抽象类的区别
- 2025-05-24 Java接口与抽象类:核心区别、使用场景与最佳实践
- 2025-05-24 java开发三年,Java中接口的使用你得知道,不然你凭什么涨薪
- 05-24php实现三方支付的方法有哪些?
- 05-24CosmicSting 漏洞影响 75% 的 Adobe Commerce 和 Magento 网站
- 05-24Java接口默认方法的奇妙用途
- 05-24抽象类和接口
- 05-24详解Java抽象类和接口
- 05-24拒绝接口裸奔!开放API接口签名验证
- 05-24每天学Java!Java中的接口有什么作用
- 05-24Java:在Java中使用私有接口方法
- 最近发表
- 标签列表
-
- jsp (69)
- gitpush (78)
- gitreset (66)
- python字典 (67)
- dockercp (63)
- gitclone命令 (63)
- dockersave (62)
- linux命令大全 (65)
- pythonif (86)
- location.href (69)
- dockerexec (65)
- tail-f (79)
- deletesql (62)
- c++模板 (62)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- console.table (62)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)