在java中,接口是一切实现方法的来源,任何实现都离开不了接口,那么,一个标准的java接口写法是怎样的呢?下面,就让小编带你一起了解一下吧。

(一)接口

1、什么是接口。

接口就是一些方法特征的集合。一些功能的定义。

比如:能被打开,能被关闭,这是定义了一些功能。把这些功能放在一起,我们称它为接口。

(可以理解为一种特殊的抽象类,当抽象类中的方法都是抽象的,那么该类可以通过接口的形式来表示)

(二)接口的特点:

1、接口里面的方法不能有实现(规范,标准)(像是PCI插槽一样),而且必须是public的,由实现它的类去实现(如果是private的话,那么子类就看不见,那么怎么去实现)

2. 接口不能实例化,只能用来充当子类的规则模版

3、接口中的方法默认为public,abstract,任何实现了接口的类必须重写接口的所有方法,不能少(否则当前类需要修饰为抽象类);

3、多个无关的类可以实现同一接口;(一个父类有多个子类)

4、一个类可以实现多个接口(这与单继承不一样!);

5、与继承相似,可以实现多态;

6、接口之间可以继承,而且是多继承;

(三)接口与接口之间具备扩展的概念

类------extends----->类 (只能继承一个类)

接口----extends----->接口 (可以继承多个)

接口---implements--->类 (可以实现多个接口)

(四)接口与抽象类的异同

不同点:

(1)抽象类一定要有is-a的关系,而接口没有。

(2)抽象类里面不一定都是抽象方法,接口一定是抽象方法

(3)父类的方法可重写,也可不写。但接口中定义的功能,子类一定要实现。

(4)继承是单继承,但接口是多继承,多实现

相同点:

(1)他们都可以定义变量来引用子类的对象,从而实现多态的功能。提高代码的可扩展性及维护性。

(2)他们都不能实例化, 但是类可以

优势:

1、抽象类中可以可以为部分方法提供默认的实现,从而避免在子类中重复实现它们,提高代码的可重用性,这是抽象类的优势所在;而接口中只能包含抽象方法

由于抽象类中允许加入具体的方法,因此扩展抽象类的功能,即向抽象类中添加一个具体的方法不会对子类造成影响。而对于接口,一旦接口公布就必须非常稳定,因为随意在接口中添加抽象方法会影响到所有实现类,这些类要么实现所有新增的方法,那么声明为抽象类

2、一个类只能继承一个直接的父类,这个父类有可能是抽象类;但一个类可以实现多个接口,这是接口的优势所在

接口具体实现:package fuxi;

/*

(1) 编写Animal接口,接口中声明run() 方法

(2) 定义Bird类和Fish类实现Animal接口

(3) 编写Bird类和Fish类的测试程序,并调用其中的run()方法

*/

public class fuxi

{

public interface Animal

{

void run();

}

class Bird implements Animal

{

public void run()

{

System.out.println("鸟不会游泳");

}

}

class Fish implements Animal

{

public void run()

{

System.out.println("鱼会游泳");

}

}

public fuxi()

{

// TODO Auto-generated constructor stub

System.out.println("生成对象时调用构造函数");

}

public static void main(String[] args)

{

// TODO Auto-generated method stub

fuxi Fuxi = new fuxi();

Bird bird = Fuxi.new Bird();

bird.run();

Fish fish = Fuxi.new Fish();

fish.run();

}

}

以上就是java接口的所有内容了,想了解更多相关java入门知识,快请一直关注我们的网站吧。

推荐阅读:

java写一个接口_一个标准的java接口写法是怎样的?java对外接口怎么写?相关推荐

  1. java背单词软件_一个JAVA写的背单词程序

    一个JAVA写的背单词程序 2007-6-9文字大小:大中小 俺看了一些Java, 写个程序出来玩玩.由于界面是用Jbuilder生成的,可能代码比较乱,而且还没合起来. 目前版本是0.00001 / ...

  2. java命令行参数_一个 java 命令行参数顺序的坑

    tream Stream是在Java SE 8 API添加的用于增强集合的操作接口,可以让你以一种声明的方式处理集合数据.将要处理的集合看作一种流的创建者,将集合内部的元素转换为流并且在管道中传输, ...

  3. java单机应用程序_一个简单的java桌面应用:单机版IFTTT

    1.项目背景: ifttt是"if this then that"的缩写,事实上是让你的网络行为能够引发连锁反应.让你使用更为方便.ifttt旨在帮助人们利用各网站的开放API,将 ...

  4. java 语言 写字板_一个简单的java语言写字板.docx

    一个简单的java语言写字板.docx 一个简单的JAVA语言写字板一.需求分析1.需求分析:现在网络上各种文档编辑器数不胜数.功能也是应有尽有,有能改变字体的,有可以改变字体颜色的,但是,这些软件有 ...

  5. java中逻辑运气_一个基于运气的数据结构,你猜是啥?

    排行榜 懂行的老哥一看这个小标题,就知道我要以排行榜作为切入点,去讲 Redis 的 zset 了. 是的,经典面试题,请实现一个排行榜,大部分情况下就是在考验你知不知道 Redis 的 zset 结 ...

  6. 5年java程序员述职报告_一个5年Java程序员的年终总结,献给还在迷茫中的你

    我越来越担心我作为一个Java程序员的未来. 恍然间,发现自己在这个行业里已经摸爬滚打了五年了,原以为自己就凭已有的项目经验和工作经历怎么着也应该算得上是一个业内比较资历的人士了,但是今年在换工作的过 ...

  7. 网易 java社招面试_一个妹子网易Java岗社招面试经历分享

    博客群发软件--用 Windows Live Writer完美发布新浪网易blogcnbl 博客群发软件--用 Windows Live Writer完美发布新浪.网易.blogcn.blogbus. ...

  8. java string最大长度_一个Java字符串中到底有多少个字符?

    作者:鸟窝 依照Java的文档, Java中的字符内部是以UTF-16编码方式表示的,最小值是 (0),最大值是(65535), 也就是一个字符以2个字节来表示,难道Java最多只能表示 65535个 ...

  9. java程序样例_一个完整的java程序示例

    一个完整的java程序示例 2020-08-15 05:22 阅读数 74 第一个java程序 package mypack; //相当于一个目录 public class HelloWorld{ p ...

  10. java有几大对象_一个 Java 对象到底有多大?

    阅读本文大概需要 2.8 分钟. 出处:http://u6.gg/swLPg 编写 Java 代码的时候,大多数情况下,我们很少关注一个 Java 对象究竟有多大(占据多少内存),更多的是关注业务与逻 ...

最新文章

  1. python习题:修改文件里的内容
  2. HDU - 1255 覆盖的面积(线段树求矩形面积交 扫描线+离散化)
  3. linux达人养成计划学习笔记(四)—— 压缩命令
  4. 毛坯房装修需要哪些材料
  5. Apache Kafka(二)- Kakfa 安装与启动
  6. 计算机网络结构有哪些,计算机网络主要拓扑结构有哪些
  7. python查看关键字列表的命令是_Python 41 完整查询语句 和 一堆关键字
  8. 动态规划之力扣股票类问题
  9. 数据中心传输需求成以太网市场巨大推动力
  10. 织梦缩略图自动补齐绝对路径_[教程]织梦CMS缩略图和文章内容图片自动转化为带域名的绝对路径...
  11. 程序设计模式浅析(plain framework商业版设计模式)
  12. 通过CSS3 Media Query实现响应式Web设计
  13. Hplus框架动态添加选项卡功能(扩展)
  14. 投毒后门防御阅读笔记,What Doesn‘t Kill You Makes You Robust (er) Adversarial Training against Poisons and Back
  15. 17*开头的是什么号码?为什么17开头手机号最好不要用
  16. JS-underfined is not a function
  17. 自燃、断轴、失控,新能源车还能买吗?
  18. 写给IT自学者的入门指南
  19. 融资租赁系统-覆盖业务全场景数据服务
  20. 如何从后台传数据到前台显示

热门文章

  1. R Shiny module学习笔记
  2. c语言链表中next作用,C语言链表详解
  3. OpenStack虚拟机冷迁移与热迁移
  4. 用EasyHMI做的工程示例一览
  5. Java实现 LeetCode 506 相对名次
  6. Python界面设计之Label
  7. tcp-ip网络模型-物理层
  8. keras学习笔记-黑白照片自动着色的神经网络-Alpha版
  9. Springboot 前后端交互 Long类型传输 前端获取数据受限
  10. python爬app西瓜视频_python3 scrapy抓取今日头条视频(西瓜视频)