Java提供关键字interface
,用这个关键字可以定义出一个特殊的结构:接口。
传统的接口中:只有成员变量(常量)和成员方法(抽象方法),且不能创建对象
//A是接口名
public interface A {
//成员变量(常量),Java默认这里的成员变量都是常量,需要赋初始值
String SCHOOL_NAME = "str";
//相当于 public static final String SCHOOL_NAME = "str";
//成员方法(抽象方法),没有方法体
void test();
//相当于 public abstract void test();
}
public class Test {
//目标:认识接口;
System.out.println(A.SCHOOL_NAME);
}
接口不能创建对象;接口是用来被类实现(implement)的,实现接口的类称为实现类。
一个类可以实现多个接口,实现类实现多个接口,必须重写完全部接口的全部抽象方法,否则实现类需要定义成抽象类。
有两点好处:
public class Test {
public static void main(String[] args) {
//目标:搞清楚使用接口的好处。
Driver s = new A();
s.drive();
Driver d = new B();
d.drive();
}
class A extends Student implements Driver, Singer{
@Override
public void drive() {
@0verride
public void sing() {
}
class Student{
interface Driver{
void drive();
}
interface Singer{
void sing();
}
}
}
请设计一个班级学生的信息管理模块:学生的数据有:姓名、性别、成绩
功能1:要求打印出全班学生的信息;
功能2:要求打印出全班学生的平均成绩。
注意!以上功能的业务实现是有多套方案的,比如:
第1套方案:能打印出班级全部学生的信息;能打印班级全部学生的平均分。
第2套方案:能打印出班级全部学生的信息(包含男女人数);能打印班级全部学生的平均分(要求是去掉最高分、最低分)。
要求:系统可以支持灵活的切换这些实现方案。
他们都会默认被public修饰
增强接口能力,更便于项目的扩展和维护。
一个接口可以同时继承多个接口。
便于实现类去实现。