接口是Java实现多继承的一种机制,一个类可以实现一个或多个接口。接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为。简单的说接口不是类,但是定义了一组对类的要求,实现接口的某些类要与接口一致。
在Java中使用关键字interface来定义接口。例如:
public interface Compare {
public int compare(Object otherObj);
}
Compare接口定义了一种操作compare,该操作应当完成与另一个对象进行比较的功能。
让类实现一个接口需要使用关键字implements,然后在类中实现接口所定义的方法。
public class Student extends People implements Compare{
private String sId; //学号
//Constructor
10
public Student() {
this("","","");
}
public Student(String name,String id,String sId){
super(name,id);
this.sId = sId;
}
public void sayHello(){
super.sayHello();
System.out.println("I am a student");
}
//get & set method
public String getSId(){
return this.sId;}
public void setSId(String sId){
this.sId = sId;}
//implements Compare interface
public int compare(Object otherObj){
Student other = (Student)otherObj;
return this.sId.compareTo(other.sId);
}
}
第一个知识点:
需要注意的是在Java中接口不是类,因此不能使用new实例化接口。
虽然不能通过new构造接口对象,但是可以声明接口变量【什么叫接口变量,其实接口也是一种数据类型,数据类型当然可以申明变量了,所以叫接口变量】。并且只要类实现了接口,就可以在任何需要该接口的地方使用这个接口的对象。
例如:
Compare com = new Student(“kunkun”,”0007”,”2017110110”);
反之也可以将一个接口变量转换为对某个类的对象的引用,不过此时要进行强制转换。
例如:
Student s = (Student) com;
把这句和上句代码合并就是
Student s = new Student(“mimi”,”0008”,”2017110111”);
好好思考你就很容易融会贯通了