Java语言第四章——接口
2021/6/19 20:57:31
本文主要是介绍Java语言第四章——接口,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
接口
我们都知道在Java中一个子类只能继承一个父类,当一个子类拥有多个父类时我们该怎么办呢?这时Java就引入了接口的概念。接口由关键字interface定义,语法如下:
[访问修饰符]interface 接口名 [extends 父接口1,父接口2---]
注意:
- 关于接口的访问修饰符,可以是public和缺省修饰符,如果省略public修饰符,系统默认使用缺省访问修饰符。
- 接口中只能定义共有的,静态的常量,并且这些常量默认都是共有的,静态的,终极的。
- 接口中的方法只能是共有的抽象方法,并且这些方法默认都是共有的,抽象的。
- 接口只能继承多个接口,接口不能继承类,也不能实现其他接口。
接口和抽象类的区别:
相同点:
- 接口和抽象类都不能被实例化。
- 接口和抽象类都可以包含抽象方法。
不同点:
- 接口中只能包含抽象方法,而抽象类则完全可以包含普通方法。
- 接口中不能定义静态方法,而抽象类中可以定义静态方法。
- 接口只能定义静态常量,不能定义普通变量或非静态的常量,而抽象类中则可以定义不同的属性,也可以定义静态的属性。
- 接口中不包含构造器,而抽象类中可以包含构造器。
- 一个类最多只能有一个父类,包括抽象类,而一个类可以实现多个接口。
实例:
(1)创建食物接口(Food),该接口被所有的食物类所实现。在该接口中定义getFood()方法。
(2)创建麦香鸡类(McChicken) ,该类实现Food接口,并重写Food接口的getFood)方法。
(3)创建薯条类(Chips) ,该类实现Food接口,并重写Food接口的getFood)方法。
(4)创建生产食品的工厂类(FoodFactory) ,在该类中定义静态方法createFood(String type)方法,在该方法中通过传入该方法参数的字符串值,判断用户需要何种食物,如果工厂中有该食物,则创建该食物对象,否则给出友好提示信息。参考代码如下:
package com.zuoye; public interface Food { void getFood(); }
package com.zuoye; public class McChicken implements Food{ @Override public void getFood() { System.out.println("来一份麦辣鸡块"); } }
package com.zuoye; public class Chips implements Food{ @Override public void getFood() { System.out.println("来一份薯条"); } }
package com.zuoye; public class FoodFactory { public static Food createFood(String type) { if(type.equals("mcchicken")) { return new McChicken(); }else if(type.equals("chips")) { return new Chips(); }else { System.out.println("对不起,没有该食物"); return null; } } }
package com.zuoye; public class Test { public static void main(String[] args) { // TODO Auto-generated method stub Food mcchicken=FoodFactory.createFood("mcchicken"); mcchicken.getFood(); Food chips=FoodFactory.createFood("chips"); chips.getFood(); } }
运行结果如下:
这篇关于Java语言第四章——接口的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?
- 2024-05-09这种运行结果里的10.100000001,怎么能最快改成10.1?
- 2024-05-09企业src漏洞挖掘-有意思的命令执行