什么是接口
接口中的所有的方法都是抽象方法,即没有方法体,接口方法
- 接口中可以放属性,但属性默认是public static final 的
- 接口不适合存储数据,更适合做功能
- 而类适合存储数据
接口的特点
- 接口中的方法和属性都是共有的
- 接口是不能实例化对象的
- 必须由子类时间接口,且子类可以实现多个接口,解决java的单继承问题
- 多个接口用逗号间隔
- 子类实现接口的关键字implements
- 直到子类把接口中的所有的方法都实现了,才可以实例化子类对象,否则子类就是抽象类
- 接口中可以有属性,但默认的是public static final,不适合存储数据
- 接口中可以有方法,方法必须都是没有方法体的,且是公有的,public可以省略
- 定义接口的关键字interface
- 接口不能实现接口,但接口可以继承接口,而且还可以多继承
即:
接口extends接口1,接口2…
- 接口中没有构造方法
结论
- 接口更适合放置方法,而不适合存储数据
- 类适合存储数据,包含抽象类和普通类
- 接口就是对子类功能的规范,子类必须全部实现接口中的额方法
接口的案例
//Person接口
public interface Person{
study();
eat();
}
//CommonPerson抽象类
public abstract class CommonPerson implements Person{
String name;
int age;
//getters and setters方法
public abstract void study();
public abstract void eat();
public void sleep(){
System.out.println("CommonPerson.sleep()");
}
}
//Student类
public class Student extends CommonPerson {
private String stuNo;
//getters and setters
public void study(){
System.out.println("Student.study()");
}
public void eat(){
System.out.println("Student.eat()");
}
public void homework(){
System.out.println("Student.homework()");
}
}
//Teacher类
public class Teacher extends CommonPerson{
private int salary;
//getter and setter
public void study(){
System.out.println("Teacher.study()");
}
public void eat(){
System.out.println("Teacher.eat()");
}
}
为什么要使用接口
- 用接口可以限定子类必须实现接口所规定的所有方法,以保证项目功能的完整性
- 用接口实现多态,有接口就一定有继承,而多态是以继承为基础的
继承是以封装为基础的