在你的类声名中包含一个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的实例.
分享到:
相关推荐
JavaSE之Swing仓库管理系统是一个基于Java编程语言的桌面应用程序,专为初学者设计,用于学习和实践Swing框架在构建实际系统中的应用。Swing是Java提供的一个丰富的图形用户界面(GUI)工具包,它允许开发者创建出...
这个最全的JavaSE教程涵盖了从入门到进阶的所有关键知识点,是学习Java编程的绝佳资源。以下是对各个部分的详细解释: 1. **Java语言基础**:这部分包括Java的语法特性,如变量声明、数据类型(基本类型与引用类型...
这份“javaSE教程ppt”提供了一套完整的初学者入门指南,涵盖了Java编程语言的基础概念、语法以及常用API的使用。 首先,Java语言的核心特性是“一次编写,到处运行”,它依赖于Java虚拟机(JVM)来实现跨平台兼容...
本教程《JavaSE基础教程》将详细讲解以上各个知识点,并通过实例代码加深理解,为新手提供全面的Java编程基础知识。阅读并实践其中的内容,将有助于你快速掌握JavaSE编程,为后续的JavaEE或Android开发打下坚实的...
集合框架是JavaSE中用于存储和操作数据的重要工具,包括List(如ArrayList和LinkedList)、Set(如HashSet和TreeSet)和Map(如HashMap和TreeMap)接口及其实现类。集合框架允许我们高效地管理数据,执行遍历、查找...
"实现类还是一个抽象类.avi"视频可能涉及了当实现接口的类本身还需要声明为抽象类的情况。如果一个类无法为接口的所有方法提供具体实现,那么它必须声明为抽象的,以便其他类可以进一步继承并完成未实现的方法。 ...
接口定义了方法的签名,但不包含实现,它是实现多继承的一种方式。包是组织类和接口的命名空间,有助于管理大型项目。 10. **面向对象特性** 包括封装、继承和多态,是Java的核心特性,使代码更加模块化,易于...
### JavaSE教程知识点详解 #### 第一章:Java预备知识 - **常用DOS命令**:介绍常用的DOS(磁盘操作系统)命令,如`dir`(列出当前目录下的文件和文件夹)、`cd`(改变当前目录)等,帮助初学者熟悉Windows命令行...
学习者将了解如何声明接口,以及如何在类中使用`implements`关键字来实现接口。 5. **异常处理**:Java提供了强大的异常处理机制,包括try-catch-finally块和throw、throws关键字。理解如何有效地处理程序中的异常...
- **线程的概念**:Java中的多线程是通过`Thread`类和`Runnable`接口实现的。 - **线程的生命周期**:包括新建、就绪、运行、阻塞和死亡五个状态。 - **线程同步**:通过`synchronized`关键字实现同步,解决多线程...
第二部分可能涉及更深入的JavaSE内容,如集合框架(List、Set、Map接口及其实现类)、枚举、注解等。第三部分可能涵盖多线程,包括Thread类、Runnable接口、同步机制(synchronized关键字、wait/notify方法)以及...
6. **默认方法**:在接口中,Java 8允许定义带有默认实现的方法,这使得向现有接口添加新方法而不会破坏已实现该接口的类成为可能。 7. **方法引用**:除了lambda表达式,Java 8还引入了方法引用,可以直接引用已有...
本视频教程“JavaSE基础入门视频教程33天之(26) part2”专注于多线程这一关键主题,这对于理解如何在Java中处理并发执行至关重要。通过这个教程,初学者可以学习到多线程的基础知识,这对于提高程序性能和解决复杂...
Java只支持单继承,但可以通过接口实现多继承的效果。 5. **多态**:多态性允许子类对象可以替换父类对象,这使得程序更具有灵活性。多态有两种形式:编译时多态(方法重载)和运行时多态(方法覆盖)。 6. **异常...
4. **集合框架**: Java集合框架包括List、Set、Queue和Map等接口及其实现类,如ArrayList、HashSet、LinkedList、HashMap等,这些是处理数据结构的关键。 5. **输入输出流**: Java的IO流用于处理数据的输入和输出,...
本教程是针对JavaSE基础入门的33天学习计划的一部分,第11天的内容主要聚焦在面向对象编程的核心概念上,旨在帮助初学者构建坚实的Java编程基础,为未来的高薪就业打下坚实根基。 首先,"day11_11(面向对象)接口和...
本教程“JavaSE基础入门视频教程33天之(18) part3”专注于Java集合框架中的一个重要主题——泛型,这对于任何希望深入理解Java编程的人来说都是不可或缺的知识。 泛型在Java中是一个强大的工具,它允许在类、接口...
枚举可以有方法,也可以实现接口,增强了其灵活性。 7. **异常处理**:Java的异常处理通过`try-catch-finally`和`throws`关键字实现,用于处理程序运行时可能出现的错误。理解异常的分类和如何编写自定义异常,有助...
本视频教程“JavaSE基础入门视频教程33天之(33) part2”旨在帮助初学者建立起坚实的编程基础,尤其是针对那些没有编程背景的人来说,通过学习可以为自己的职业生涯开启10K以上的薪资水平。 在JavaSE中,反射...