在你的类声名中包含一个implements子句用来实现一个接口.一个类可以在implements关键字后跟一个以逗号分隔的接口列表来实现多个接口
.按照惯例,implements子句跟在extends子句后(如果有).
一个例子,Relatable:
public interface Relatable {
// this (调用isLargerThan的对象)和
// other 必须是相同类的实例
// 返回 1, 0, -1 如果this大于,
// 等于,小于other
public int isLargerThan(Relatable other);
}
如果你想比较两个相似对象的大小二不管他们真正是什么,那么这个类必须实现了Relatable然后实例化他们.
如果你想要一种比较对象之间的"大小",那么任意类都可以实现它.对于字符串,"大小"可能指的是字符数;对于书来说,它可能指书的页数等等.所有这样的类都可以实现isLargerThan()方法.
如果你知道了某个类实现了Relatable,那么你就知道你可以比较这个类的两个实例的大小.
实现Relatable接口
这儿有一个矩形类:
public class RectanglePlus implements Relatable {
public int width = 0;
public int height = 0;
public Point origin;
// 四个构造方法
public RectanglePlus() {
origin = new Point(0, 0);
}
public RectanglePlus(Point p) {
origin = p;
}
public RectanglePlus(int w, int h) {
origin = new Point(0, 0);
width = w;
height = h;
}
public RectanglePlus(Point p, int w, int h) {
origin = p;
width = w;
height = h;
}
// 移动矩形的方法
public void move(int x, int y) {
origin.x = x;
origin.y = y;
}
// 计算面积
public int getArea() {
return width * height;
}
//实现Relatable接口所需要的方法
public int isLargerThan(Relatable other) {
RectanglePlus otherRect = (RectanglePlus)other;
if (this.getArea() < otherRect.getArea())
return -1;
else if (this.getArea() > otherRect.getArea())
return 1;
else
return 0;
}
}
因为RectanglePlus实现了Relatable接口,所有两个RectanglePlus对象是可以比较大小的.
注意:isLargerThan方法接受一个Relatable类型.
RectanglePlus otherRect = (RectanglePlus)other;
这行代码将other转换成RectanglePlus实例.类型转换告诉编译器这个对象真正是什么.直接调用other.getArea()会失败,因为编译器不知道other是RectanglePlus的实例.
分享到:
相关推荐
01_JavaSE面试题:自增变量
05_JavaSE面试题:递归与迭代
02_JavaSE面试题:单例设计模式
JavaSE+JavaEE企业级开发 全程笔记免费下载,内容详尽,doc文档,共173页,六号字体,双栏排版。 *、Java 基础, *、web, *、数据库(Mysql Oracle jdbc Hibernate hql/sql), *、JSP, *、Ajax *、Struts, *、...
数据库课程设计1、JavaSE:Java入门.pdf1、JavaSE:Java入门.pdf1、JavaSE:Java入门.pdf1、JavaSE:Java入门.pdf1、JavaSE:Java入门.pdf1、JavaSE:Java入门.pdf1、JavaSE:Java入门.pdf1、JavaSE:Java入门.pdf1...
04_JavaSE面试题:方法的参数传递机制
06_JavaSE面试题:成员变量与局部变量
03_JavaSE面试题:类初始化和实例初始化等
李兴华 javaSE 视频教程 笔记 pdf
思维导图:含括多线程概念,线程创建开启方式,线程安全,线程状态及常见问题
这是自己用了两个星期完成的仓库管理系统,用了JavaSE的Swing技术,对于初学者来说绝对是一个很优秀的案例。里面有视频教程,是自己的录像,肯定会对大家有很大的帮助。也有软件的说明文档。
这里文件里的内容适合Java初学者,里边包含了接口的概念以及相关的用法,这也是小编在刚开学学习JavaSE时记录的一些笔记,里面的内容非常适合JavaSE入门者学习,都是浅显易懂的话语,没有太多的官方话,绝对是你初学...
JavaSE基础教程(新手必读) JavaSE基础教程(新手必读)
最全的javaSE 教程,包含Java语言基础、流程控制、函数、数组、对象、修饰符、接口、内部类、集合、异常处理、多线程、IO框架、反射、OOAO初步等基础知识点汇总
JavaSE基础教程,功能强大,是一款非常好的工具,操作方便,效果好
思维导图,含括流概念,流分类,流关系的图文展示等
https://blog.csdn.net/Guai_Ka/article/details/113437333 代码
JavaSE基础入门视频教程33天之(24),有利于没有基础的人学习,学精后工资10K以上。