Java学习笔记——接口概述

抽象这种特性首先要了解接口,接口技术(inplement),一个类可以有一个接口或者多个接口,接口可以描述一个类应该具有什么样的功能,而不是去具体的来实现这个类的功能。

首先,接口不是类,接口只是类的所遵循的一些统一格式的描述。同理,也是对类的一组需求的描述。类遵循什么样的接口,那么类就需要实现该接口规范的功能。

例:ArrayList类中的sort方法“承诺”可以对数组进行排序,但是该方法需要满足下列前提:那就是对象所属的类必需实现了Comparable的接口。
Comparable 接口的代码是这样的:

	public interface Comparable{
		int  compareTo(Object other);
}

一个Comparable接口的定义方式如上,证明这个接口必须要包含一个comparaTo的一个返回值是int类型的方法,而且这个方法的参数必须是一个Object对象(Object对象是Java中所有对象都需要继承的父对象)

x.compareTo(y);实现这行代码的时候,x和y所在的类都必须要实现了Comparable接口。

注意:接口中绝对不能含有实例域,在Java SE8 之前,也不能在接口中实现方法,到现在为止,也不能在接口中使用这些方法调用实例域。

假设现在想要使用Array类中的sort方法对某个类(这个类是Employee类)中对雇员对象,其中的两个对象数组进行比较的话,那我就需要使Employee类实现一个接口,怎么实现呢?大概就是分为以下两部分
(1) 将类声明为给定的实现接口。class Employee implements Comparable
这里的Employee类需要对compareTo方法进行提供,一个比较雇员薪资的方法应该是这样的:

public int compareTo(Object otherObject){
	Employee other=(Employee) otherObject;
	return Double.compare(salary,other.salary);
}

看到这里,相信大家或许会有疑问,为什么我们不在Employee类中直接实现一个compare方法呢,而是要去实现一个Comparable的一个接口呢?因为在sort方法种可能会有对compareTo方法的调用,所以一定要保证有compareTo的方法.

一个对接口的使用实例如下:

import java.util.Arrays;

public class EmployeeSarlaryCompare {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Employee[] staff=new Employee[3];
		
		staff[0]=new Employee("harry hack",2000);
		staff[1]=new Employee("haomeng",2800);
		staff[2]=new Employee("xiaojiejie",4396);
		
		staff[0].compareTo(staff[1]);
		
		Arrays.sort(staff);
		
		
	}

}

下面是对Employee类的定义

package exercise2;

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 double getSalary() {
		return salary;
	}
	
	public void raiseSalary(double byPercent) {
		double raise=salary*byPercent/100;
		salary+=salary;
	}
	
	public int compareTo(Employee Other) {
		return Double.compare(salary, Other.salary);
	}
}
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值