6.1 接口不是类,是对类的一组需求的描述,这些类需要遵守接口描述的统一格式进行定义。例如:Arrays类中sort方法(可以对对象数组进行排序)前提是对象所属的类必须实现了Comparable 接口。

public interface Comparable
{
int compareTo(Object other)
}

Comparable

public interface Comparable<T>
{
int compareTo(T other)
}

Comparable泛型

接口的方法自动的属于public;接口中可以定义多个方法;可以定义常量;接口不能含有实例域;

实现接口:1)将类声明为实现给定的接口(implements);2)对接口中的所有方法进行定义。

comparaTo 方法实现

 public int ComparaTo(Object otherObject)
{
Employee other (Employee) otherObject;
return Double.compare(salary, other.salary);
}
静态Double.compare方法(第一个参数<第二个参数,返回一个负数,二者相等,返回0,
comparaTo 方法 泛型实现
 class Employee implements Comparable<Employee>{
public int ComparaTo(Employee other)
{
return Double.compare(salary, other.salary);
}
}

注意 Object 参数进行类型转换

为什么不在Employee类直接提供一个comparableTo方法呢?主要原因在于java是一种强类型(strongly typed)语言。在调用方法时编译器会检查这个方法是否存在。

 package cc.openhome;
import java.util.Arrays;
public class JieKou {
public static void main(String[] args) {
// TODO code application logic here
Employee[] staff =new Employee[3];
staff[0] =new Employee("harry Hacker", 75000);
staff[1]=new Employee("Carl Cracker", 355000);
staff[2]=new Employee("Tony Tester", 228000);
Arrays.sort(staff);
for(Employee e:staff)
System.out.println("name="+e.getName()+",salarry="+e.getSalary());
}
}
class Employee implements Comparable<Employee>
{
private String name;
private double salary;
public Employee(String name,double salary)
{
this.name =name;
this.salary=salary;
}
public String getName()
{
return name ;
}
public double getSalary()
{
return salary;
}
public void raiseSalary(double byPercent)
{
double raise =salary*byPercent/100;
salary +=raise;
}
public int compareTo(Employee other)
{
return Double.compare(salary,other.salary);
}
}
name=harry Hacker,salarry=75000.0
name=Tony Tester,salarry=228000.0
name=Carl Cracker,salarry=355000.0
成功构建 (总时间: 0 秒)

run:


最新文章

  1. microstrip patch antenna
  2. 无法安装MVC3,错误提示:安装KB2483190(vs10-kb2483190)出错
  3. AKI
  4. mac Zip 常用命令
  5. C#静态static的用法
  6. Git随记
  7. Git 笔记三 Git的初步使用
  8. [妙味 DOM] 第二课:DOM、BOM相关方法及属性
  9. mysql链接表,connection string, federated engine
  10. Uva140 Bandwidth 全排列+生成测试法+剪枝
  11. tomcat更改端口号
  12. react-native版本升级
  13. 关于flock
  14. 关于STM32时钟系统
  15. plsql 常用函数-转
  16. 安装ReactNative开发IDE
  17. C# Uditor 富文本的部署
  18. 20155318 《网络攻防》Exp5 MSF基础应用
  19. Nginx中文手冊
  20. Python函数相关

热门文章

  1. 爬虫中Xpath有时候是无效的
  2. PHP文件操作的经典案例
  3. iOS 中使用 MJExtension 遇到 关键字(id) 怎么办
  4. 骨骼动画反向动力学(IK)的实现
  5. [Xcode 实际操作]九、实用进阶-(30)为IAP(支付方式)内购项目添加测试账号,测试内购功能
  6. PJzhang:互联网是有国界
  7. NOIp2016 愤怒的小鸟 【状压dp】By cellur925
  8. 关于在linux系统环境下解压rar压缩文件
  9. C 语言实例 - 字符串中各种字符计算
  10. nginx 设置websocket支持