接口
2021/6/5 18:21:02
本文主要是介绍接口,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
接口
接口的使用
-
接口使用interface来定义
-
Java中,接口和类是并列的两个结构
-
如何定义接口,定义接口中的成员
- JDK7及以前:只能定义全局常量和抽样方法
- 全局常量:public static final的(书写时,可以省略不写)
- 抽象方法:public abstract的(书写时,可以省略不写)
- JDK8:除了定义全局常量和抽样方法之外,还可以定义静态方法、默认方法。
- 接口中定义的静态方法只能用接口来调用。
- 实现类的对象可以调用默认方法。
- 如果子类继承的父类和实现的接口中声明了同名同参数的默认方法,那么子类在没有重写此方法的情况下,默认调用父类中的同名同参数的方法。---->类优先原则
- 在实现类中调用接口的方法 接口名.super.方法
- JDK7及以前:只能定义全局常量和抽样方法
-
接口中不能定义构造器!!!意味着接口不能实例化。
-
Java开发中,接口通过让类去实现(implements)的方式来使用
- 如果“实现类”覆盖接口中的所有抽象方法,则此”实现类“就可以实例化
- 如果“实现类”没有覆盖接口中的所有抽象方法,则此“实现类”仍为一个抽象类
-
Java类可以实现多个接口----->弥补了单继承的缺点
格式:class AA extends BB implements CC
-
接口与接口之间可以继承,而且可以多继承。
-
接口的使用,体现了多态性。
-
接口实际上可以看作时一种规范。
为什么要有接口
由于Java中,一个子类只能继承一个父类,但由于实际情况中,为了让一个子类去继承多个父类。于是,就出现了接口,让一个类去实现多个接口。(个人理解)
例题
定义一个接口用来实现两个对象的比较。
interface CompareObject{
public int compareTo(Object o);
//若返回值是 0 , 代表相等; 若为正数,代表当
前对象大;负数代表当前对象小
定义一个Circle类,声明redius属性,提供getter和setter方法
定义一个ComparableCircle类,继承Circle类并且实现CompareObject接口。在
ComparableCircle类中给出接口中方法compareTo的实现体,用来比较两个圆的半
径大小。
定义一个测试类InterfaceTest,创建两个ComparableCircle对象,调用compareTo
方法比较两个类的半径大小。
思 考 : 参 照 上 述 做 法 定 义 矩 形 类 Rectangle 和 ComparableRectangle 类 , 在
ComparableRectangle类中给出compareTo方法的实现,比较两个矩形的面积大小。
package com.yicurtain.Interface; public interface CompareObject { public int compareTo(Object o); }
package com.yicurtain.Interface; public class Circle { private double redius; public double getRedius() { return redius; } public void setRedius(float redius) { this.redius = redius; } public Circle() { } public Circle(double redius) { this.redius = redius; } }
package com.yicurtain.Interface; public class ComparableCircle extends Circle implements CompareObject{ public ComparableCircle(double radius){ super(radius); } @Override public int compareTo(Object o) { if (this==o){ return 0; } if (o instanceof ComparableCircle){ ComparableCircle c=(ComparableCircle) o; if (this.getRedius()>c.getRedius()){ return 1; }else if (this.getRedius()<c.getRedius()){ return -1; }else{ return 0; } }else{ // return 0; throw new RuntimeException("传入的数据类型不匹配"); } } }
package com.yicurtain.Interface; public class interfaceTest { public static void main(String[] args) { ComparableCircle c1 = new ComparableCircle(3); Circle c2= new ComparableCircle(2.2); int value=c1.compareTo(c2); System.out.println(value); } }
这篇关于接口的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-10-06小米11i印度快充版ROM合集:极致体验,超越期待
- 2024-10-06【ROM下载】小米11i 5G 印度版系统, 疾速跃迁,定义新速度
- 2024-10-06【ROM下载】小米 11 青春活力版,青春无极限,活力全开
- 2024-10-05小米13T Pro系统合集:性能与摄影的极致融合,值得你升级的系统ROM
- 2024-10-01基于Python+Vue开发的医院门诊预约挂号系统
- 2024-10-01基于Python+Vue开发的旅游景区管理系统
- 2024-10-01RestfulAPI入门指南:打造简单易懂的API接口
- 2024-10-01初学者指南:了解和使用Server Action
- 2024-10-01Server Component入门指南:搭建与配置详解
- 2024-10-01React 中使用 useRequest 实现数据请求