接口的基本语法(一)

1.使用interface定义;

2.接口当中的方法都是抽象方法;

3.接口当中的方法都是public权限;

使用implements, 实现 是特殊的 继承;

interface USB{public void read();public void write();}

定义一个接口,用interface来定义

class USBPhone implements USB{public void read(){System.out.println("读");}public void write(){System.out.println("写");}}

定义一个子类或则实现类来实现这个接口,一个类实现了一个接口,会继承这个接口里面的抽象方法,然后在子类里面对抽象方法进行复写。

class Test{public static void main(String args[]){USBPhone usbPhone = new USBPhone();USB usb = usbPhone;usb.read();usb.write();}}

结果:

接口的基本语法(二)

1.实现接口使用implements关键字

2.一个类可是实现多个接口

3.一个接口可以继承多个接口

理解:2.手机可以通过USB连接电脑,也可以使用WIFI连接电脑,这部手机既支持USB标准,又支持WIFI标准。

3.

interface USB{public void read();public void write();}
interface WIFI{public void open();public void close();}
class Phone implements USB,WIFI{public void read(){System.out.println("读");}public void write(){System.out.println("写");             }public void open(){System.out.println("打开");}    public void close(){System.out.println("关闭");}}
class Test{public static void main(String args[]){Phone phone = new Phone();USB usb = phone;//两种转型方式,一张转型为USBusb.read();usb.write();WIFI wifi =phone;//另一种转型为WIFIwifi.open();wifi.close();}}

两种向上转型。

interface A{public void funA();}
interface B{public void funB();}
 interface C extends A,B{public void funC();}

看C这个接口,C不是实现A,B这两个接口,而是继承,为什么不是实现(implements),要实现A,B就要去复写A,B里面的抽象方法,这样的话C就不可能是个接口,所以C是继承(extends)A,B,继承了A,B里的funA(),funB(),再加上C中的funC(),C接口就有3个方法了。当我们要用一个类,实现C的时候,必须复写这3个方法,这就是一个接口可以继承另外的多个接口的含义。

接口的应用

1.为什么要使用接口

2.工厂方法模式

interface Printer{public void open();public void close();public void print(String s);}
class HpPrinter implements Printer{public void open(){System.out.println("惠普开机");}public void close(){System.out.println("惠普关机");}public void print(String s){System.out.println("惠普打印"+s);}}
class CannonPrinter implements Printer{private void clean(){System.out.println("佳能清理");}public void open(){this.clean();System.out.println("佳能开机");}public void close(){System.out.println("佳能关机");}public void print(String s){System.out.println("佳能打印"+s);}}
class Test{
<span style="white-space:pre">     </span>public static void main(String args[]){
<span style="white-space:pre">         </span>//根据用户的选择,生成相应的打印机对象,并且向上转型为Printer
<span style="white-space:pre">             </span>Printer p = null;
<span style="white-space:pre">             </span>
<span style="white-space:pre">             </span>int flag = 1;
<span style="white-space:pre">             </span>if(flag==0){
<span style="white-space:pre">                     </span>p = new HpPrinter();
<span style="white-space:pre">                 </span>}
<span style="white-space:pre">             </span>else if(flag == 1){
<span style="white-space:pre">                     </span>p = new CannonPrinter();
<span style="white-space:pre">                 </span>}
<span style="white-space:pre">                 </span>
<span style="white-space:pre">             </span>p.open();
<span style="white-space:pre">             </span>p.print("Test");
<span style="white-space:pre">             </span>p.close();
<span style="white-space:pre">         </span>}
<span style="white-space:pre"> </span>}

结果:

现在问题来了,电脑上有100个功能需要调用打印机,Test里面的代码要写100 遍吗?

解决:把重复代码封装起来,需要的时候直接调用。定义一个类,把功能写在里面。添加一个PrinterFactory.java ,修改Test.java  。

class PrinterFactory{public static Printer getPrinter(int flag){Printer p = null;if(flag==0){p = new HpPrinter();}else if(flag == 1){p = new CannonPrinter();}return p;}}
class Test{public static void main(String args[]){int flag =0;//如果PrinterFactory 中 的getPrinter() 前不加static 的话,无法从静态上下文中引用非静态方法,必须写成如下注释/* PrinterFactory b = new PrinterFactory();Printer p = b.getPrinter(flag);   *///如果加了static,静态函数也可以用类名来调用 Printer p = PrinterFactory.getPrinter(flag);p.open();p.print("Test");p.close();}}

这样的话,如果再添加一个打印机,就不用在100的功能里面修改那么多重复代码了,只需要在PrinterFactory里面加入打印机即可。这就是著名的工厂方法模式:

工厂方法模式的思路很简单:把生成对象的代码,或者使用new 来调用构造函数的代码把它封装在工厂类当中。

接口的基本语法与应用28,29相关推荐

  1. 易成新能加码光伏产业链 作价28.29亿收购赛维两子公司

    易成新能11月17日晚公告称,拟通过向债权人发行股份及支付现金方式,合计作价28.29亿元,取得破产重整后江西赛维100%股权和新余赛维100%股权. 同时,公司拟向控股股东中国平煤神马集团等5名对象 ...

  2. c语言编写程序求8,使用c语言编写程式,实现计算1*2*3+4*5*6+7*8*9+……+28*29*30的值...

    使用c语言编写程式,实现计算1*2*3+4*5*6+7*8*9+--+28*29*30的值以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快 ...

  3. 140.210.28.29扬州BGP高防服务器

    江苏扬州市机房,位于运河西路237号数据中心,机柜数量400-500个,位于4楼6楼,每层200多个标准机柜,机柜42U.同机房典型客户有阿里的天猫 淘宝 CDN业务.金山云的华东最大节点,以及小米后 ...

  4. 接口的基础语法和接口在开发中的作用2021-07-23java学习日记

    Javase进阶 接口的语法和接口的作用 p499-p516 关键词: 接口    implements    面向抽象编程    OCP开闭原则 接口的基础语法 1.接口也是一种引用数据类型,编译之 ...

  5. 26.27.28.29.极区图(南丁格尔玫瑰图)、维恩图 (Venn diagram)、面状图(Area chart)、树地图

    26.极区图(南丁格尔玫瑰图) 27.维恩图 (Venn diagram) 28.面状图(Area chart) 29.树地图 26.极区图(南丁格尔玫瑰图) 极区图(又名南丁格尔玫瑰图)呈放射延伸状 ...

  6. java 继承接口语法_java的继承、接口方面的语法及知识

    继承(inheritance):一个类只能继承一个类 代码复用 继承的语法: class ChildClass extends ParentsClass{ } 父类的属性子类中都存在,只是有没有权限访 ...

  7. Java 接口语法_JAVA接口的基本语法

    一.接口的概念 在之前学习了抽象类,其中抽象类的抽象方法定义了标准,具体的方法实现交给子类完成,之后再结合多态的特征在一定程度上解决代码的耦合(上节课的参数统一),这需要在继承关系中实现,但是继承存在 ...

  8. day15 java接口的基础语法

    1.基础语法 2.接口多继承 3.类和接口多实现 3.1实现没有继承关系会怎么样 4.继承和实现都存在 5.接口基础语法总结

  9. java的接口语法_JAVA接口的基本语法

    一.接口的概念 在之前学习了抽象类,其中抽象类的抽象方法定义了标准,具体的方法实现交给子类完成,之后再结合多态的特征在一定程度上解决代码的耦合(上节课的参数统一),这需要在继承关系中实现,但是继承存在 ...

最新文章

  1. 数据结构——最小生成树之克鲁斯卡尔算法(Kruskal)
  2. 【源码分析】微信小程序 - 01表单组件 - 01button - 实践
  3. 首个教育部印发的人工智能行动计划出炉:规划三步走,大学有三任务
  4. 入门命令5-流程跳转:goto
  5. bootstrap 复选框及单选按钮
  6. 华为GPON设备ONU常见告警及处理
  7. 软考-中级-网络工程师-2021年下半年-上午真题整理
  8. Hive安装超详细教程
  9. 使用阿里云加速器解决docker下载镜像太慢的问题
  10. XTU-oj 字符矩阵
  11. ppt菜鸟学飞第一天——基础知识及字体知识
  12. java xps生成_Java 将PDF/XPS转为Word/html /SVG/PS/PCL/PNG、PDF和XPS互转(基于Spire.Cloud.SDK for Java)...
  13. 怎样用计算机算百分之,win7使用自带计算器计算百分比的方法
  14. 电阻的耐功率冲击与耐电压冲击
  15. python 拆包_python3拆包详解
  16. 抖音数据化运营可以分为4个大的模块
  17. No resource found that matches the given name 'Theme.AppCompat.Light 的完美解决方案
  18. UOS将字体制作成软件包,可双击安装
  19. javascript全笔记-基础版(尚硅谷视频李立超老师)
  20. linux下的EC20的监控python脚本

热门文章

  1. 谷歌浏览器代理服务器有问题
  2. UniApp使用Painter画图
  3. python自动化办公:利用python将签名自动插入docx文件
  4. 基于微信小程序图书馆座位预约管理系统
  5. 搭建FISCO BCOS联盟链节点
  6. 《招聘一个靠谱的iOS》面试题参考答案
  7. 苹果iOS系统下检查第三方APP是否安装
  8. 1588的E2E链路延迟测量机制
  9. React 超详细入门教程
  10. VMworld 2021中国大会来了,你来不来?