上节课我们学习了抽象类,那么这节课我们来学习下接口
什么是接口?
可以理解为一个低配版的可多继承的抽象类
接口的特征:
由interface声明
可以被多继承
只能声明静态常量和抽象方法
声明的所有方法默认为 public abstract
类继承(实现)接口需要用implements关键字
实体类继承(实现)接口必须重写(实现)接口内声明的所有方法
抽象类继承(实现)接口可以选择性的重写(实现)接口内声明的所有方法
接口的作用:
和抽象类作用类似,只不过接口可以被多继承
注意:
接口继承接口依然使用extends关键字,接口可以继承多个接口
Demo:
public class InterfaceTeach {
public static void main(String[] args) {
CanFly bird = new Pemguin();
System.out.println(bird.canFly());
CanSwim bird2 = new Woodpecker();
System.out.println(bird2.canSwim());
//接口类引用变量依然可以指向它的实现类对象
//接口也可以通过匿名内部类的方式new出对象
CanFly canFly = new CanFly() {
@Override
public boolean canFly() {
return true;
}
};
System.out.println(canFly.canFly());
}
}
//换个例子
interface CanFly{
boolean canFly();
}
interface CanSwim{
boolean canSwim();
}
//继承(实现)多个接口
abstract class Bird implements CanFly,CanSwim{
}
//企鹅
class Pemguin extends Bird{
@Override
public boolean canFly() {
return false;
}
@Override
public boolean canSwim() {
return true;
}
}
//啄木鸟
class Woodpecker extends Bird{
@Override
public boolean canFly() {
return true;
}
@Override
public boolean canSwim() {
return false;
}
}