Java核心技术(六) —— 接口
2016-05-10 15:14
501 查看
后面的博文,我们将开始Java的常用高级技术学习。
接口技术,主要用来描述类具有什么样的功能,而并不给出每个功能的具体实现。一个类可以实现(implement)一个或多个接口,并在需要接口的地方,随时使用实现了相应接口的对象。
本文,我们将从以下几个主要方面对接口进行深入学习
接口
对象克隆
接口与回调
此外还有经常用到的Comparable和Comparator接口。
下面我们来看下Comparable接口的代码
即任何实现 Comparable接口的类都需要包含CompareTo方法,而这个方法的参数必须是一个Object对象。
(1)实际上,现在的Comparable接口已经改进成了泛型类型
(2)接口中的所有方法都自动属于public,因此,在接口中声明方法时,不必再提供关键字public。
(3)在调用
(4)接口中可以包含多个方法,可以定义常量,但绝不能含有实例域,也不能在接口中实现方法。提供实例域和方法实现的任务应该由实现接口的那个类来完成。此外,接口中的域都被自动设为public static final。
那么,如果希望使用Arrays类的sort方法对Employee对象数组进行排序,Employee类就必须实现Comparable接口。
为了让类实现一个接口,通常需要:
将类声明为实现给定的接口(使用关键字implements)
对接口中的所有方法进行定义
(1)将类声明为实现给定的接口,需要使用关键字implements:
(2)然后为Employee类提供compareTo方法,假设希望根据Employee的salary进行比较
注意,在接口声明中不必将compareTo方法声明为public(前1);但是在实现接口时,必须将方法声明为public(后2)。
为了避免总是出现Object的类型转换,可以将上面的实现替换为对
然而,尽管不能构造接口的对象,却能声明接口的变量
而且接口变量必须引用实现了接口的类对象
接口技术,主要用来描述类具有什么样的功能,而并不给出每个功能的具体实现。一个类可以实现(implement)一个或多个接口,并在需要接口的地方,随时使用实现了相应接口的对象。
本文,我们将从以下几个主要方面对接口进行深入学习
接口
对象克隆
接口与回调
此外还有经常用到的Comparable和Comparator接口。
1、接口
接口不是类,而是对类的一组需求描述,这些类要遵从接口描述的统一格式进行定义。下面我们来看下Comparable接口的代码
public interface Comparable { int compareTo(Object other); }
即任何实现 Comparable接口的类都需要包含CompareTo方法,而这个方法的参数必须是一个Object对象。
(1)实际上,现在的Comparable接口已经改进成了泛型类型
public interface Comparable<T> { int compareTo(T other); }
(2)接口中的所有方法都自动属于public,因此,在接口中声明方法时,不必再提供关键字public。
(3)在调用
x.compareTo(y)的时候,当x小于y时,返回一个负数,相等时返回0,否则返回一个正数
(4)接口中可以包含多个方法,可以定义常量,但绝不能含有实例域,也不能在接口中实现方法。提供实例域和方法实现的任务应该由实现接口的那个类来完成。此外,接口中的域都被自动设为public static final。
那么,如果希望使用Arrays类的sort方法对Employee对象数组进行排序,Employee类就必须实现Comparable接口。
为了让类实现一个接口,通常需要:
将类声明为实现给定的接口(使用关键字implements)
对接口中的所有方法进行定义
(1)将类声明为实现给定的接口,需要使用关键字implements:
class Employee implements Comparable
(2)然后为Employee类提供compareTo方法,假设希望根据Employee的salary进行比较
public int compareTo(Object otherObject) { Employee other = (Employee) otherObject; return Double.compare(salary, other.salary); }
注意,在接口声明中不必将compareTo方法声明为public(前1);但是在实现接口时,必须将方法声明为public(后2)。
为了避免总是出现Object的类型转换,可以将上面的实现替换为对
Comparable<Employee>接口的实现
class Employee implements Comparable<Employee> { public int compareTo(Employee other) { return Double.compare(salary, other.salary); } ··· }
1.1 接口的特性
接口不是类,尤其不能使用new运算符实例化一个借口x = new Comparable(···); \\Error
然而,尽管不能构造接口的对象,却能声明接口的变量
Comparable x; \\OK
而且接口变量必须引用实现了接口的类对象
x = new Employee(···); \\OK
1.2 接口与抽象类
使用抽象类表示通用属性存在一个问题:每个类只能扩展于一个类。但每个类可以实现多个接口。相关文章推荐
- Eclipse中web-inf和meta-inf文件夹的信息
- Java 生成验证码图片
- Retrofit Rxjava 实现图片下载、保存并展示
- java基本类型中的类型转换
- 大话设计模式java版本 第一章 简单工程模式
- SpringMVC 接收ajax发送的数组对象
- java注解的理解
- Struts1 和 Struts2区别
- 使用 Spring Boot 快速构建 Spring 框架应用---学习笔记
- java中实现定时功能
- Java 序列化Serializable详解
- Java中Properties类的操作
- Java 内部类
- Java反射机制
- 【Spring Boot】Spring Boot修改静态资源后立即生效
- 为什么做java的web开发我们会使用struts2,springMVC和spring这样的框架?
- eclipse如何关联source.jar(源码)和doc.jar(开发文档)
- 用java写多位数乘法
- java 汉诺塔问题
- java定时任务--Timer、TimerTask