接口
接口是一种特殊的抽象类。
格式:interface 接口名{ }
接口中的成员修饰符是的固定的。
成员变量:public static final
成员函数:public abstract
接口的出现将“多继承”通过另一种形式体现出来,即“多实现”。
/*
接口:
成员变量:都是被public static final修饰
成员函数:都是被public abstract修饰
*/
interface A{
public static final String name="aa";
public abstract void eat();
}
interfa B{
}
//类与接口之间是实现关系,通过关键字implements联系
//子类实现了接口,必须对接口中所有的方法进行重写
//接口不能被实例化,也就是无法被new
class C implements A{
public void eat();
}
//子类可以继承一个类的同时,还可以实现多个接口
//接口的出现避免了单继承的局限性
class D extends C implements A,B{
}
/*
类与类之间是单继承
接口与接口之间可以多继承
*/
interface C extends A,B{
}
class Demo{
}
抽象类和接口的关联
相同点:都是将共性的东西从上面抽取而来的
不同点:
–抽象类需要被继承,接口需要被实现
–抽象类只能单继承,而接口可以多实现
–抽象类中可以有抽象方法,接口中只能是抽象方法
–抽象类的继承,是该体系中基本共性的东西,接口是该体系中额外的功能。
class Demo{
public static void main(String[] args){
BasketBallPlayer b=new BasketBallPlayer();
b.learn();//打印结果:学英语
}
}
class Person{
String name;
int age;
void eat(){
System.out.println("人会吃饭");
}
void sleep(){
System.out.println("人会睡觉");
}
}
abstract class Player extends Person{
abstract void study();
}
abstract class Coach extends Person{
abstract void teach();
}
//定义一个接口 提供learn方法
interface A{
void learn();
}
class BasketBallPlayer extends Player implements A{
public void study(){
System.out.println("学习扣篮");
}
public void learn(){
System.out.println("学英语");
}
}
class BasketBallCoach extends Coach implements A{
public void teach(){
System.out.println("教扣篮");
}
public void learn(){
System.out.println("学英语");
}
}