实现接口

接口指定对象必须提供的协议。类可以提供接口的抽象方法的部分实现,并且在这种情况下,类必须将自身声明为抽象。

实现接口的类使用“implements”子句来指定接口的名称。“implements”子句由关键字implements,后跟逗号分隔的接口类型列表组成。

一个类可以实现多个接口。实现接口的类声明的一般语法如下:

class implements { // Class body goes here }

假设有一个Circle类。

public class Circle implements Shape { void draw(){ System.out.println("draw circle"); } }

实现接口的类必须重写以实现接口中声明的所有抽象方法。 否则,类必须声明为abstract。接口的默认方法也由实现类继承。植入类可以选择不需要重写默认方法。接口中的静态方法不会被实现类继承。

下面的代码定义了两种引用类型,一种来自Circle类,另一种来自接口类型。

Circle c = new Circle(); Shape shape = new Circle();

变量c是Circle类型。它指的是Circle对象。第二个赋值也是有效的,因为Circle类实现了Shape接口,而Circle类的每个对象也都是Shape类型。

实现接口方法

当一个类完全实现了一个接口时,它为所实现的接口的所有抽象方法提供一个实现。接口中的方法声明包括方法的约束。例如,方法声明中的throws子句是方法的约束。

import java.io.IOException; interface Shape { void draw(double amount) throws IOException; } class Main implements Shape{ @Override public void draw(double amount) { // TODO Auto-generated method stub } }

Main的代码是有效的,即使它丢弃了throws子句。当类覆盖接口方法时,允许删除约束异常。如果使用Shape类型,必须处理IOException。

import java.io.IOException; interface Shape { void draw(double amount) throws IOException; } class Main implements Shape{ @Override public void draw(double amount) { // TODO Auto-generated method stub } public void anotherMethod(){ Shape s = new Main(); try { s.draw(0); } catch (IOException e) { e.printStackTrace(); } draw(0); } }

实现多个接口

一个类可以实现多个接口。类实现的所有接口都在类声明中的关键字implements之后列出。

通过实现多个接口,类为所有接口中的所有抽象方法提供实现。

interface Adder { int add(int n1, int n2); } interface Subtractor { int subtract(int n1, int n2); } class Main implements Adder, Subtractor { public int add(int n1, int n2) { return n1 + n2; } public int subtract(int n1, int n2) { return n1 - n2; } }

部分实现接口

类不必为所有方法提供实现。如果一个类不提供接口的完全实现,它必须声明为abstract。

interface Calculator { int add(int n1, int n2); int subtract(int n1, int n2); } abstract class Main implements Calculator{ public int add(int n1, int n2) { return n1 + n2; } }

¥ 我要打赏   纠错/补充 收藏

生活中接口Java_Java接口实现相关推荐

  1. java中抽象接口_一篇文章让你彻底理解java中抽象类和接口

    相信大家都有这种感觉:抽象类与接口这两者有太多相似的地方,又有太多不同的地方.往往这二者可以让初学者摸不着头脑,无论是在实际编程的时候,还是在面试的时候,抽象类与接口都显得格外重要!希望看完这篇博客文 ...

  2. 一篇文章让你彻底理解java中抽象类和接口

    相信大家都有这种感觉:抽象类与接口这两者有太多相似的地方,又有太多不同的地方.往往这二者可以让初学者摸不着头脑,无论是在实际编程的时候,还是在面试的时候,抽象类与接口都显得格外重要!希望看完这篇博客文 ...

  3. java为什么项目中需要使用接口

    一.为什么项目中需要使用接口? 在项目中,有一些功能,不仅仅是一个类去实现,即有很多地方有用到,大家需要统一标准.所以需要用接口,这样大家同时实现一个接口,就能够统一规范.在接口中只是定义了基本的方法 ...

  4. dvi显卡连接html显示器,显示器中的DVI接口显卡怎么切换成VGA接口?

    现在生活中,每个家庭里都至少有个台式电脑.那以往台式电脑大部分的显示器都是用VGA接口的.电脑配置更新换代很快,有的在换电脑时只换了主机,而显示器还继续用着.那现在新换的主机显卡大部分都是带DVI接口 ...

  5. java的标记接口_Java中的标记接口?

    我被教授,Java中的Marker接口是一个空接口,用于向编译器或JVM发送信号,实现此接口的类的对象必须以特殊方式处理,如序列化,克隆等. 但最近我了解到,它实际上与编译器或JVM无关.例如,在Se ...

  6. php 抽象类 接口 区别,PHP中抽象类、接口的区别与选择分析

    本文实例分析了PHP中抽象类.接口的区别与选择.分享给大家供大家参考,具体如下: 区别: 1.对接口的使用是通过关键字implements.对抽象类的使用是通过关键字extends.当然接口也可以通过 ...

  7. C#中抽象类和接口的区别

    一.抽象类:       抽象类是特殊的类,只是不能被实例化:除此以外,具有类的其他特性:重要的是抽象类可以包括抽象方法,这是普通类所不能的.抽象方法只能声明于抽象类中,且不包含任何实现,派生类必须覆 ...

  8. Java 8 中的这个接口真好用!

    在开发过程中经常会使用if...else...进行判断抛出异常.分支处理等操作.这些if...else...充斥在代码中严重影响了代码代码的美观,这时我们可以利用Java 8的Function接口来消 ...

  9. 妙用Java 8中的 Function接口 消灭if...else(非常新颖的写法)

    欢迎关注方志朋的博客,回复"666"获面试宝典 来源:juejin.cn/post/7011435192803917831 在开发过程中经常会使用if...else...进行判断抛 ...

最新文章

  1. mongodb的安装及主从复制
  2. CV 方向,长期看好,短期谨慎?
  3. pyqt5讲解1:窗口,QLabel,QLineEdit,QTextEdit
  4. java中的动态绑定与静态绑定
  5. python多线程爬取多个网页_python多线程爬取网页
  6. 2018-2019-1 20189218《Linux内核原理与分析》第二周作业
  7. 网站转换APP源代码 WebAPP源代码 网站生成APP源代码 Flutter项目 带控制端
  8. 如何使用南方CASS绘制地形图
  9. 从网络启动恢复RG750Gr3
  10. 金融壹账通拟7月4日香港上市:2年亏近30亿 市值蒸发超90%
  11. 联想thinkpad e430 设置u盘启动
  12. 软件架构模式 mark Richards - 读后总结 3 - 微内核架构
  13. 3种将等高线转DEM的方法
  14. html中JSON格式化输出
  15. php点击切换图片的底部导航,如何优雅地使用BottomNavigationView实现底部导航栏+fragment切换效果...
  16. 文明重启战局服务器维护中是什么意思,文明重启为什么改了密码别人还能登?...
  17. python实现爬取东方财富网
  18. mysql 重复率高字段 索引,为什么重复值高的字段不能建索引(+聚集索引和非聚集索引)...
  19. 东邪西毒经典对白,程序员版
  20. LU分解法(又名Doolittle分解法,直接三角分解法)C++实现

热门文章

  1. 计算机应用课程的专业建议,计算机应用技术专业课程衔接问题论文
  2. ubuntu18.04+ros melodic环境下手柄驱动环境安装
  3. 鸿蒙系统照片显示模糊,为什么iPhone上照片模糊了 iCloud相册到底有啥用?
  4. 长视频凛冬已至,芒果超媒、B站如何度过这个冬天?
  5. 【前沿】凌空手势识别综述
  6. 金蝶盘点机PDA条码标签打印条码生成器
  7. 智能投影:坚果、当贝前攻后防
  8. XP系统配置使运行程序速度加快
  9. 根据先序和中序求后序,注意递归终止条件
  10. cmac神经网络 matlab,基于CMAC 神经网络的PID 控制.pdf