在Java程序设计语言中,量化接口,接口不是类,而是对类的一组需求描述,这些类要遵从量化接口,接口描述的统一格式进行定义。
Arrays类中的sort方法承诺可以对对象数组进行排序,但要求满足下列前提:对象所属的类必须实现了Comparable量化接口,接口。
也就是说,任何实现Comparable量化接口,接口的类都需要包含compareTo方法,并且这个方法的参数必须是一个Object对象,并且返回一个整数。
量化接口,接口定义:
使用interface关键字。量化接口,接口中所有的方法自动地属于public,所以定义量化接口,接口方法时,不必提供关键字的public。只有方法声明,不能有任何实现的方法。量化接口,接口中还可以定义常量,但是不能具有实例域。
如何实现量化接口,接口创建类
使用关键字implements来声明类。实现量化接口,接口中所有的方法。
拿之前写的Employee类,实现比较方法,按照工资排序,如下:
package com.wht.demo;
import java.util.Calendar;
import java.util.Date;
import java.util.Objects;
/**
* 员工类
*
* @author wht
*/
public class Employee implements Comparable {
private Date hirDay;
private String name;
private double salary;
public Employee(String name, double salary, int year, int month, int day) {
Calendar calendar = Calendar.getInstance();
calendar.set(year, month, day);
this.name = name;
this.salary = salary;
this.hirDay = calendar.getTime();
}
@Override
public int compareTo(Employee o) {
if (this.salary < o.salary) {
return -1;
}
if (this.salary > o.salary) {
return 1;
}
return 0;
}
public Date getHirDay() {
return hirDay;
}
public String getName() {
return name;
}
public double getSalary() {
return salary;
}
@Override
public int hashCode() {
return Objects.hash(name, salary);
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Employee employee = (Employee) o;
return Double.compare(employee.salary, salary) == 0 &&
Objects.equals(name, employee.name);
}
@Override
public String toString() {
return 'Employee{' +
'hirDay=' + hirDay +
', name='' + name + ''' +
', salary=' + salary +
'}';
}
public void raiseSalary(double percent) {
this.salary += this.salary * percent / 100;
}
}
有人说,真实业务都是按照指定字段进行比较的怎么玩,类中写一个sortfilter就行了。
量化接口,接口特性
量化接口,接口不是类,不能用new关键字实例化一个量化接口,接口。
虽然不能创建对象,但是它可以作为数据类型定义变量。这就是所谓的多态,用量化接口,接口定义可以接受所有实现这个量化接口,接口的具体对象。
public static void main(String[] args) {
Comparable comparable = new Employee('JK',20000,2019,10,22);
System.out.println(comparable instanceof Employee);
}
有些量化接口,接口只定义了常量,而没有定义方法。
尽管每个类只能拥有一个超类,但是却可以实现多个量化接口,接口。这就为定义类的行为提供了极大的灵活性。
量化接口,接口与抽象类
这个没什么太多好比较的,核心就一个问题,class可以多实现,但是只能单继承。
文章为作者独立观点,不代表 股票程序化软件自动交易接口观点