1、什么是接口
接口就相当于是一种能力和约定,因为在java当中java只支持单继承,不能够多继承,为了满足多继承的方式,推出了接口的概念。
接口的概念:代表了某种能力
方法的定义:能力的具体要求
java为单继承,当父类的方法种类无法满足子类需求时,可实现接口扩充子类功能
接口支持多实现,可为类扩充多种能力
2、接口的规范
任何类在实现接口的时候,必须要实现接口中所有的抽象方法,否则此类为抽象类
实现接口中的抽象方法时,访问修饰符必须是public
3、接口引用
同父类一样,接口也可声明为引用,并指向实现类对象
注意:
仅可调用接口中所声明的方法,不可调用实现类中独有的方法
可强转回实现类本身类型,进行独有方法调用
4、接口的多态
public interface Swimming {
public void swim();
}
public interface Running extends life{
void shout();
void run();
}
public abstract class Animal {
public abstract void eat();
public abstract void sleep();
}
public class Dog extends Animal implements Running,Swimming{
public void eat() {
System.out.println("老狗我在啃骨头");
}
public void sleep(){
System.out.println("老狗我在打呼噜");
}
@Override
public void swim() {
System.out.println("老狗我在洗海澡");
}
@Override
public void run() {
System.out.println("老狗我在狂撒欢");
}
@Override
public void shout() {
// TODO Auto-generated method stub
System.out.println("老狗我在嗷嗷叫");
}
}
public class Itest {
public static void main(String[] args) {
Dog xiaohei = new Dog();
xiaohei.eat();
xiaohei.sleep();
xiaohei.run();
xiaohei.swim();
System.out.println("------------");
Animal dahuang = new Dog();
dahuang.eat();
dahuang.sleep();
System.out.println("------------");
Swimming laopi = new Dog();
laopi.swim();
System.out.println("------------");
Running wangcai = new Dog();
wangcai.run();
wangcai.shout();
}
}
不同引用类型,仅可调用自身类型中所声明的方法
5、常见关系
类与类
单继承
extends 父类名称
类与接口
多实现
implements 接口名称2,接口名称1,...
接口与接口
多继承
extends 父接口2,父接口1,...
6、常量接口
将多个常用于表示状态或固定值的变量,以静态常量的形式定义在接口中统一管理,提高代码可读性
7、接口的好处
程序的耦合度降低
更自然的使用多态
设计与实现完全分离
更容易搭建程序框架
更容易更换具体实现