Java接口的声明和实现
接口的声明和实现
- 接口的概念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接口的声明和实现相关推荐
- java 接口的声明和实现 总结_java知识总结(三):函数式接口
函数式接口:只有一个抽象方法的接口. 函数式接口的特点: 函数式接口有且只有一个抽象方法. 函数式接口中可以有default方法和static方法(jdk8新增).private方法和private ...
- java接口和抽象类的区别和作用
java接口和抽象类的区别和作用 接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明.一个类通过(implements)接口的方 ...
- java 接口重载_java,_java 接口中如何声明类似于重载的方法?,java - phpStudy
java 接口中如何声明类似于重载的方法? 我们的作业要写一个web宠物医院管理系统,因为医生.客户等都包含浏览.添加.删除操作,所以对于service层,我希望有个统一的接口以供servlet中的类 ...
- java接口如何定义常量 c_在Java接口中怎样访问定义的常量呢?
java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能).那么我们在Java接口中怎 ...
- Java接口和Java抽象类
Java接口和Java抽象类有太多相似的地方,又有太多特别的地方,究竟在什么地方,才是它们的最佳位置呢?把它们比较一下,你就可以发现了. 1.Java接口和Java抽象类最大的一个区别,就在于Java ...
- 【转】JAVA 接口
1.定义接口 使用interface来定义一个接口.接口定义同类的定义类似,也是分为接口的声明和接口体,其中接口体由常量定义和方法定义两部分组成.定义接口的基本格式如下: [修饰符] inte ...
- java 接口与抽象类的区别
1.概述 一个软件设计的好坏,我想很大程度上取决于它的整体架构,而这个整体架构其实就是你对整个宏观商业业务的抽象框架,当代表业务逻辑的高层抽象层结构 合理时,你底层的具体实现需要考虑的就仅仅是一些算法 ...
- Java接口interface
Java接口interface 1.多个无关的类可以实现同一个接口. 2.一个类可以实现多个无关的接口. 3.与继承关系类似,接口与实现类之间存在多态性. 接口(interface)是抽象方法和常量值 ...
- 超详细解读Java接口:模块通信协议以及默认方法和静态方法
有不少学习Java的同学一直有个疑问,不仅在初学者中很普遍,连许多经验丰富的老手也很难表述清楚,那就是:Java接口到底是什么? 来看看孙鑫老师的讲解,本文干货含量拉满,这可能是距离你深入理解Java ...
最新文章
- NSLog打印自定义对象
- jitter 如何优化网络_如何做好关键词优化网络?
- Django 实现第三方账号登录网站
- 分组卷积/群卷积(Group Convolution)
- request.setAttribute()与request.getAttribute()取值问题
- selinux --chcon命令
- 联网玩具CloudPets 泰迪熊泄漏数百万语音信息
- java扫描器创建,老司机帮您Java 创建条形码扫描器
- linux进程命令at,Linux进程管理命令之sa/at/atq。
- 常用嵌套sql语句查询
- 号称最为简明实用的Django上手教程(下)
- 数据链路层的基本概念
- 新一代医院信息系统(NGHIS)设计(2)——基础集成平台(I)
- Python3.10.2安装教程
- 在Maven项目中使用tk-mybatis(不结合SpringBoot)
- Win10早期版本下月终止服务、百万医疗设备存在漏洞风险|11月10日全球网络安全热点
- 遥遥领先影像组件:dicomobjects.ocx
- 国内外知名的IT社区
- android学习十八(Service服务的基本用法)
- systemctl 实现开机自启服务