interface

接口
在Java程序设计语言中,接口不是类,而是对类的一组需求描述,这些类要遵从接口描述的统一格式进行定义。
1.接口中的所有方法自动地属于public。
2.接口中的域被自动设为 public static final
3.接口中可以定义常量。
4.接口中绝不能含有实例域,也不能在接口中实现方法。
5.接口是一个没有实例域的抽象类。

让类实现接口的步骤
1.将类声明为实现给定的接口, 关键字implement
2.对接口中的所有方法进行定义。必须把方法声明成public,不然编译器就会给出试图提供更弱的访问权限的警告信息。

下面是实现Compareable接口进行排序的的例子。
package interfaces;

public 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 void setName(String name) {
        this.name = name;
    }

    public double getSalary() {
        return salary;
    }

    public void setSalary(double salary) {
        this.salary = salary;
    }

    @Override
    public int compareTo(Employee employee) {
        return Double.compare(this.salary, employee.salary);
    }

}
package interfaces;

import java.util.Arrays;

public class EmployeeSortTest {
    public static void main(String[] args) {
        Employee[] staff = new Employee[3];

        staff[0] = new Employee("Harry Hacker", 35000);
        staff[1] = new Employee("carl Cracker", 75000);
        staff[2] = new Employee("Tony Tester", 38000);

        Arrays.sort(staff);

        for(Employee e : staff) 
            System.out.println("name=" + e.getName() + ", salary=" + e.getSalary());



    }
}
equals方法的最佳实践
1.如果子类之间的比较含义不一样, 那就属于不同类对象的非法比较。每个compareTo方法都应该在开始时进行下列检测:
if(getClass() != other.getClass()) throw new ClassCaseException();
2.如果存在这样一种通用算法,它能够对两个不同的子类对象进行比较,则应该在超类中提供一个compareTo方法,并将这个方法声明为final。
3.假如,想要按照类似职务排序的话,那就应该在Employee类中提供一个rank方法。每个子类覆盖rank,并实现一个比较rank值的compareTo方法。

instanceOf 判断某个类是不是这个类或者这个类的父类或者父接口 的实例。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值