接口的声明和实现

  • 接口的概念Interface
  • 接口的声明
  • 接口的实现
  • 接口的程序设计举例

接口的概念Interface

1.接口:用于声明一组类的公共操作的接口,Java中把对接口功能的继承称为实现(implement),接口只是声明了功能是什么,而并没有定义如何实现该功能,功能的实现是在继承这个接口的各个子类中完成的
2.组成:接口往往由一组常量和抽象方法组成,一般不包括变量和有具体实现的方法
3.性质:支持多重继承
【注】接口与抽象类的区别:
(1)接口不能实现任何方法,而抽象类可以
(2)类可以实现许多接口,但只有继承一个父类
(3)接口不是类分级结构的一部分,没有联系的类可以实现相同的接口

接口的声明

定义接口的一般格式:

[ public ] interface 接口名 [ extends 父接口名列表 ]
{[ public ] [ final ] [ static ] 类型 变量名 = 常量值 ; //常量声明...[ public ] [ abstract ] 返回类型 方法名 (参数列表) ; //抽象方法声明...
}

例如Shape的接口声明:

public interface Shape
{public final static double PI = 3.1416;public abstract void draw(Graphics g);
}

接口的实现

实现接口一般格式:

class ClassName extends ParentClass implements interface1,interface2
{...  //接口中方法的实现
}

接口的程序设计举例

Write a program to complete following tasks
(1)declare a interface name:Shape
public interface Shape
{
public double getArea(); //return the surface area of shape
public double getVolumn();
public double getName(); //return class name
}
(2)Define three classes Rectangle,Circle and Clinder to implements the following diagram
(3)Define a class named ShapeTest to test above classes

【输出结果】
Rectangle: area=6.00, Volumn=0.00
Circle: area=50.27, Volumn=0.00
Clinder: area=251.33, Volumn=235.62

此处给出主函数

public class ShapeTest
{public static void main(String[] args) {Shape s[] = new Shape[3];s[0] = new Rectangle(2,3);s[1] = new Circle(4);s[2] = new Clinder(5,3);for(Shape ele:s)System.out.printf("%s: area=%.2f,Volumn=%.2f\n",ele.getName(),ele.getArea(),ele.getVolumn());}
}

以下给出完整代码

package ml; //该java程序在ml包里
interface Shape //接口的定义
{public double getArea();public double getVolumn();public String getName();
}
class Rectangle implements Shape
{private int w;private int l;public Rectangle(int wValue,int lValue){w = wValue;l = lValue;}public double getArea(){return w*l;}public double getVolumn(){return 0;}public String getName(){return "Rectangle";}
}
class Circle implements Shape
{private int r;public Circle(int rValue){r = rValue;}public double getArea(){return Math.PI*r*r;}public double getVolumn(){return 0;}public double getLength(){return 2*Math.PI*r;}public String getName(){return "Circle";}
}
class Clinder extends Circle
{private int h;public Clinder(int r,int height){super(r);h = height;}public double getArea(){return 2*super.getArea()+super.getLength()*h;}public double getVolumn(){return super.getArea()*h;}
}
public class ShapeTest
{public static void main(String[] args) {Shape s[] = new Shape[3];s[0] = new Rectangle(2,3);s[1] = new Circle(4);s[2] = new Clinder(5,3);for(Shape ele:s)System.out.printf("%s: area=%.2f,Volumn=%.2f\n",ele.getName(),ele.getArea(),ele.getVolumn());}
}

运行的结果为:

Java接口的声明和实现相关推荐

  1. java 接口的声明和实现 总结_java知识总结(三):函数式接口

    函数式接口:只有一个抽象方法的接口. 函数式接口的特点: 函数式接口有且只有一个抽象方法. 函数式接口中可以有default方法和static方法(jdk8新增).private方法和private ...

  2. java接口和抽象类的区别和作用

    java接口和抽象类的区别和作用 接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明.一个类通过(implements)接口的方 ...

  3. java 接口重载_java,_java 接口中如何声明类似于重载的方法?,java - phpStudy

    java 接口中如何声明类似于重载的方法? 我们的作业要写一个web宠物医院管理系统,因为医生.客户等都包含浏览.添加.删除操作,所以对于service层,我希望有个统一的接口以供servlet中的类 ...

  4. java接口如何定义常量 c_在Java接口中怎样访问定义的常量呢?

    java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能).那么我们在Java接口中怎 ...

  5. Java接口和Java抽象类

    Java接口和Java抽象类有太多相似的地方,又有太多特别的地方,究竟在什么地方,才是它们的最佳位置呢?把它们比较一下,你就可以发现了. 1.Java接口和Java抽象类最大的一个区别,就在于Java ...

  6. 【转】JAVA 接口

    1.定义接口     使用interface来定义一个接口.接口定义同类的定义类似,也是分为接口的声明和接口体,其中接口体由常量定义和方法定义两部分组成.定义接口的基本格式如下: [修饰符] inte ...

  7. java 接口与抽象类的区别

    1.概述 一个软件设计的好坏,我想很大程度上取决于它的整体架构,而这个整体架构其实就是你对整个宏观商业业务的抽象框架,当代表业务逻辑的高层抽象层结构 合理时,你底层的具体实现需要考虑的就仅仅是一些算法 ...

  8. Java接口interface

    Java接口interface 1.多个无关的类可以实现同一个接口. 2.一个类可以实现多个无关的接口. 3.与继承关系类似,接口与实现类之间存在多态性. 接口(interface)是抽象方法和常量值 ...

  9. 超详细解读Java接口:模块通信协议以及默认方法和静态方法

    有不少学习Java的同学一直有个疑问,不仅在初学者中很普遍,连许多经验丰富的老手也很难表述清楚,那就是:Java接口到底是什么? 来看看孙鑫老师的讲解,本文干货含量拉满,这可能是距离你深入理解Java ...

最新文章

  1. NSLog打印自定义对象
  2. jitter 如何优化网络_如何做好关键词优化网络?
  3. Django 实现第三方账号登录网站
  4. 分组卷积/群卷积(Group Convolution)
  5. request.setAttribute()与request.getAttribute()取值问题
  6. selinux --chcon命令
  7. 联网玩具CloudPets 泰迪熊泄漏数百万语音信息
  8. java扫描器创建,老司机帮您Java 创建条形码扫描器
  9. linux进程命令at,Linux进程管理命令之sa/at/atq。
  10. 常用嵌套sql语句查询
  11. 号称最为简明实用的Django上手教程(下)
  12. 数据链路层的基本概念
  13. 新一代医院信息系统(NGHIS)设计(2)——基础集成平台(I)
  14. Python3.10.2安装教程
  15. 在Maven项目中使用tk-mybatis(不结合SpringBoot)
  16. Win10早期版本下月终止服务、百万医疗设备存在漏洞风险|11月10日全球网络安全热点
  17. 遥遥领先影像组件:dicomobjects.ocx
  18. 国内外知名的IT社区
  19. android学习十八(Service服务的基本用法)
  20. systemctl 实现开机自启服务

热门文章

  1. Hone蓝牙钥匙扣 iPhone轻松找钥匙
  2. JavaWeb开发之ListenerFilter
  3. PHP json获取相关对象值
  4. 【LoRaWAN 时钟同步】
  5. 从零开始搭建公司微服务架构技术栈,这套架构绝了...
  6. 微信小程序自定义checkbox样式
  7. 哪个洗脱一体机好用?性能好洗地机排名
  8. (android高仿系列)今日头条 --新闻阅读器 (二)
  9. 分别导入.xls和.xlsx后缀的excel文件
  10. a76比a73强多少_OPPOA73和vivoY75哪个好 OPPOA73和vivoY75对比