1、什么是接口

接口是一种规则,描述了一个行为。

举个例子:

动物

青蛙        狗        兔子

他们三个动物都会吃饭喝水,但是青蛙和狗会游泳,兔子不会游泳。

难道我们在动物里面就放弃写游泳这个行为,让青蛙和狗都创建独立方法吗?

这显然是不合理的。

所以我们可以抽取将行为作为抽象方法抽取出来,放在接口中,谁需要就去调用接口。

举个不恰当的例子:

每一个对象都是修仙者,类是自身已经参悟的大道,方法是已经掌握的法则,属性是自身的修为。

方法的重写是对自身掌握的法则的扩展。

接口是那些游离在世间等待修仙者吸纳的法则。

2、接口的定义和使用

接口用关键字interface来定义

public interface 接口名{}

接口不能实例化(接口不能创建对象)

注意1:接口和类之间是实现关系,通过implements关键字表示。

public class 类名 implements 接口名{}

注意2:实现类还可以在继承一个类的同时实现多个接口。

public class 类名 extends 父类 implements 接口名1,接口名2{}

注意3:实现类后需要重写所有抽象方法或者定义抽象类

3、接口中成员的特点

成员变量

只能是常量

默认修饰符:public static final

这是因为,public权限足够大别的包也可以访问,static可以用类名调用简单快捷,final作为一个规则我们不想让别人修改他,所以设置final。

构造方法

没有

接口不可以创建对象。

接口也不需要外界赋值。

成员方法

只能是抽象方法

默认修饰符:public abstratc(建议新手手动写上)

jdk7以前:接口中只能定义抽象方法。

jdk8:

为了解决接口功能升级时,所有实现接口的类都需要重写的麻烦,jdk8引入了默认方法,需要用default 关键字修饰

格式:

public default void show(){  }

注意事项:

默认方法不是抽象方法,所以不被强制重写,但是你仍然可以重写他,在重写时必须去掉default

默认方法在定义时public可以省略,default不可以省略。

如果实现了多个接口,且接口里有重名的默认方法,必须对默认方法进行重写。(否则你就不知道调用哪个方法了对吧)

jdk8允许接口中定义静态方法,用static关键字修饰。

格式:

public static void show(){  }

注意事项:

静态方法只能通过接口名调用,不可以用对象或者类名调用。

jdk9:

在默认方法和静态方法中有时会有大量重复的代码,我们想要一种私有的方法被默认和静态方法调用,并且不对外服务。jdk9中新增了接口中的私有方法。

格式1:普通的私有方法--->只能服务默认方法

private void show(){  }

格式2:静态的私有方法--->只能服务静态方法

private static void show(){  }

4、接口和类之间的关系

类和类的关系

继承关系,只能单继承不能多继承,但是可以多层继承。

类和接口的关系

实现关系,可以单实现,也可以多实现,还可以在继承一个类的同时实现多个接口。

注意:多继承时需要重写所有的抽象方法。如果不同接口中有重名抽象方法,重写一次即可。

接口和接口的关系

​​​​​​​继承关系,可以单继承,也可以多继承。

5、总结

1、接口代表了规则,是行为的抽象。想让类拥有哪个行为,让这个类实现对应的接口就可以了。

2、当一个方法的参数是接口时,可以传递接口所有实现类的对象,这样的方式称之为接口多态。

相当于接口创建了抽象方法。在类中实现了接口,重写方法。在test类中创建方法并调用时可以把参数类型设置为接口,这样调用时可以用所有的实现了接口的类创建的对象调用。

public static void method(Swim s){s.swimming();}

Java面向对象之接口相关推荐

  1. 学习大数据的第13天——Java面向对象(接口、分析参数返回值的类型不同时如何解决、包以及访问权限修饰符(public、protected、默认、private))

    学习大数据的第13天--Java面向对象(接口.分析参数返回值的类型不同时如何解决.包以及访问权限修饰符(public.protected.默认.private)) 接口 接口的基本定义: 1.1.语 ...

  2. Java面向对象编程——接口

     接口是个比抽象类更抽象的一个抽象类 上个文章讲解了抽象类是从多个类中抽象出来的模板,如果将这种抽象进行得更彻底,则可以提炼出一种更特殊的"抽象类"--接口(interface). ...

  3. Java -- 面向对象【接口】

    Java接口是Java语言中存在的结构,有特定的语法和结构,Java中的接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现, ...

  4. 第三十、Java面向对象之接口

    一个类最多只能有一个直接的父类.但是有多个间接的父类. java是单继承. class Ye{String name; }class Fu extends Ye{}// class Zi extend ...

  5. Java面向对象基础接口和抽象的理解

    第一,抽象类: 我们都知道,在面向对象的领域中,一切都是一个对象,所有的对象都是用类来描述的,但不是所有的类都是用对象来描述的.如果一个类没有足够的信息来描述一个特定的对象,并且需要其他特定的类来支持 ...

  6. Java 面向对象 之 接口 火车票实例

    http://www.verejava.com/?id=16992821172850 /**接口的实际应用:题目: 两个人A,B开发一个火车票显示功能A负责客户端, B负责服务器端思路:1. 抽象出类 ...

  7. Java面向对象之接口(常用)

    接口特点 接口就是规范,定义的是一组规则,体现了现实世界中"如果你是-,则必须能-",例如,如果你是汽车,则必须能跑 接口的本质是契约,就像法律一样,制定好了大家都要遵守 面向对象 ...

  8. Java面向对象(接口、匿名内部类、object类、单例、多例)

    1.1接口(抽象类与接口,优先使用接口) 抽象方法和全局常量的集合,使用interface定义,使用implements继承 接口可以多继承(可以向上强制转换) 接口只能有public,一般不写常量 ...

  9. Java 面向对象:接口的理解

    接口的基础语法 一.接口怎么定义,语法是什么? public interface MyMath {double PI = 3.1415926;int sum(int a, int b);int sub ...

最新文章

  1. vmware 虚拟机控制台打开慢的解决方案
  2. dict格式转字符串两种方法的区别
  3. 【Tensorflow】 Object_detection之训练PASCAL VOC数据集
  4. php生日验证,PHP验证生日
  5. JavaScript-在当前显示区范围内实现点不到的小方块
  6. ndoejs后台查询数据库返回的值-进行解析
  7. 《21天学通C语言》总结(1)
  8. c语言给程序加锁,C语言使用fcntl对文件加锁
  9. 华为路由器配置命令——【简单实用的华为路由器配置命令】
  10. 【Try to Hack】veil-evasion免杀
  11. Red is good
  12. 戴尔微型计算机重装WIN10系统,戴尔品牌机如何重装win10系统
  13. 网络安全——文件上传
  14. 如何在互联网公司求职成功
  15. potplay皮肤装扮
  16. 哈哈哈!段子手们在家被迫营业,每一个都能笑到窒息!
  17. 在使用windows-build-tools报错Please restart this script from an administ
  18. 关于STM32的CANFD IP设计的缺陷
  19. iOS 中横竖屏切换
  20. [转]AES加密算法及java代码实现

热门文章

  1. 桥牌坐庄训练bm2000 level3闯关记录——A5
  2. 前程无忧达成私有化协议:遭遇大砍价 作价降至43亿美元
  3. 从G1到G16 HTC Android帝国超级大盘点
  4. 饥荒mod制作教程--物品(食物)(农作物)--02
  5. 用 Python 来全自动抢微信红包
  6. 研究速递:使用AI应对腐败的潜力和风险
  7. 产品经理之路:产品经理基础
  8. 干货收藏 | 如何写一份专业的技术简历
  9. mips的旁路_【参赛手记】MIPS流水线之阵列乘除法的实现
  10. 查看java编程环境是否配置成功