Java面向对象之接口
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面向对象之接口相关推荐
- 学习大数据的第13天——Java面向对象(接口、分析参数返回值的类型不同时如何解决、包以及访问权限修饰符(public、protected、默认、private))
学习大数据的第13天--Java面向对象(接口.分析参数返回值的类型不同时如何解决.包以及访问权限修饰符(public.protected.默认.private)) 接口 接口的基本定义: 1.1.语 ...
- Java面向对象编程——接口
接口是个比抽象类更抽象的一个抽象类 上个文章讲解了抽象类是从多个类中抽象出来的模板,如果将这种抽象进行得更彻底,则可以提炼出一种更特殊的"抽象类"--接口(interface). ...
- Java -- 面向对象【接口】
Java接口是Java语言中存在的结构,有特定的语法和结构,Java中的接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现, ...
- 第三十、Java面向对象之接口
一个类最多只能有一个直接的父类.但是有多个间接的父类. java是单继承. class Ye{String name; }class Fu extends Ye{}// class Zi extend ...
- Java面向对象基础接口和抽象的理解
第一,抽象类: 我们都知道,在面向对象的领域中,一切都是一个对象,所有的对象都是用类来描述的,但不是所有的类都是用对象来描述的.如果一个类没有足够的信息来描述一个特定的对象,并且需要其他特定的类来支持 ...
- Java 面向对象 之 接口 火车票实例
http://www.verejava.com/?id=16992821172850 /**接口的实际应用:题目: 两个人A,B开发一个火车票显示功能A负责客户端, B负责服务器端思路:1. 抽象出类 ...
- Java面向对象之接口(常用)
接口特点 接口就是规范,定义的是一组规则,体现了现实世界中"如果你是-,则必须能-",例如,如果你是汽车,则必须能跑 接口的本质是契约,就像法律一样,制定好了大家都要遵守 面向对象 ...
- Java面向对象(接口、匿名内部类、object类、单例、多例)
1.1接口(抽象类与接口,优先使用接口) 抽象方法和全局常量的集合,使用interface定义,使用implements继承 接口可以多继承(可以向上强制转换) 接口只能有public,一般不写常量 ...
- Java 面向对象:接口的理解
接口的基础语法 一.接口怎么定义,语法是什么? public interface MyMath {double PI = 3.1415926;int sum(int a, int b);int sub ...
最新文章
- vmware 虚拟机控制台打开慢的解决方案
- dict格式转字符串两种方法的区别
- 【Tensorflow】 Object_detection之训练PASCAL VOC数据集
- php生日验证,PHP验证生日
- JavaScript-在当前显示区范围内实现点不到的小方块
- ndoejs后台查询数据库返回的值-进行解析
- 《21天学通C语言》总结(1)
- c语言给程序加锁,C语言使用fcntl对文件加锁
- 华为路由器配置命令——【简单实用的华为路由器配置命令】
- 【Try to Hack】veil-evasion免杀
- Red is good
- 戴尔微型计算机重装WIN10系统,戴尔品牌机如何重装win10系统
- 网络安全——文件上传
- 如何在互联网公司求职成功
- potplay皮肤装扮
- 哈哈哈!段子手们在家被迫营业,每一个都能笑到窒息!
- 在使用windows-build-tools报错Please restart this script from an administ
- 关于STM32的CANFD IP设计的缺陷
- iOS 中横竖屏切换
- [转]AES加密算法及java代码实现