引言
接口
接口(interface)这种技术主要用来描述类具有什么功能,并不给出每个功能的具体实现;
与类的区别
1.接口不是类,是对类的一组需求描述;
2.可以把接口看成没有实域的抽象类;
3.一个类可以实现多个接口,但只能扩展一个抽象类;
接口的基本特性
接口的基本格式:
package Interface;
public interface Eat {
public static final int num = 0;
public void Drink();
}
/**
1.方法的类型都是public
2.方法都没有实域(具体实现)
3.接口可声明变量(自动设为public static final类型,不需标注)
*/
实例
1.sort排序
api:java.util.Arrays
static void sort(Object[] a)
数组a[]的元素必须属于实现了Comparable接口的类;
package Interface;
import java.util.Arrays;
/**
* 2021.06.10
* 要想用sort对Employees排序,必须实现Comparable接口
*/
class Employees implements Comparable<Employees>{
private String name;
private double salarys;
public Employees(String name,double salary){
this.name=name;
this.salarys=salary;
}
public double GetSalary(){
return this.salarys;
}
@Override
public int compareTo(Employees o) {
return Double.compare(salarys,o.salarys)*-1;
}
}
public class EmployeeSort {
public static void main(String[] args) {
Employee[] p=new Employee[5];
p[0]=new Employee("xiaobai",2000.01);
p[1]=new Employee("xiaobai",2002.01);
p[2]=new Employee("xiaobai",1999.01);
Arrays.sort(p,0,3);
System.out.println(p[0].GetSalary());
}
}
2.克隆
深拷贝与浅拷贝
3.结构与回调
回调(callback)是一种常见的程序设计模式,在这种模式中,可以指出某个特定事件发生时应该采取的动作。
实现ActionListener的类:
package Interface;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Date;
public class ActionPerform implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {//到达指定的时间间隔后,定时器就会调用这个方法.
Date date = new Date();
System.out.println("此时是 "+date);
Toolkit.getDefaultToolkit().beep();//这是什么方法
}
}
Timer传递器实现:
package Interface;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class TimerTest {
public static void main(String[] args) {
ActionListener ap=new ActionPerform();
new Timer(1000,ap).start();
JOptionPane.showMessageDialog(null,"??");
System.exit(0);
}
}
运行结果:
一些函数解释: