接口
接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。
接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。
接口的特点
接口用关键字interface表示
类实现接口用implements表示
| class 类名 implements 接口名 {}
 | 
接口不能实例化,但是可以被实现。
一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类。
(在 Java 中,接口类型可用来声明一个变量,他们可以成为一个空指针,或是被绑定在一个以此接口实现的对象。)
接口成员特点
- 成员变量;只能是常量,并且是静态的。默认修饰符:public static final
- 接口没有构造方法。
- 成员方法只能是抽象方法。 默认修饰符:public abstract
抽象类和接口的区别
成员区别
抽象类
    成员变量:可以变量,也可以常量
    构造方法:有
    成员方法:可以抽象,也可以非抽象
接口
    成员变量:只可以常量
    成员方法:只可以抽象
关系区别
类与类之间的关系
继承关系,只能单继承,可以多层继承。
| class Son extends Object {
 }
 
 | 
类与接口之间的关系
实现关系,可以单实现,也可以多实现。
并且还可以在继承一个类的同时实现多个接口。
| interface Father {public void show();
 }
 
 interface Mother {
 public void show2();
 }
 
 class Son extends Object implements Father,Mother {
 public void show() {
 System.out.println("show son");
 }
 
 public void show2() {
 System.out.println("show2 son");
 }
 }
 
 | 
接口与接口之间的关系
继承关系,可以单继承,也可以多继承。
| interface Father {public void show();
 }
 
 interface Mother {
 public void show2();
 }
 
 interface Sister extends Father,Mother {
 
 }
 
 | 
设计理念的区别
    抽象类 被继承体现的是:”is a”的关系。抽象类中定义的是该继承体系的共性功能。
    接口 被实现体现的是:”like a”的关系。接口中定义的是该继承体系的扩展功能。
示例
猫狗案例,加入跳高的额外功能
| interface Jumpping {
 
 public void jump();
 }
 
 abstract Animal{
 
 private String name;
 
 private int age;
 
 public Animal() {}
 
 public Animal(String name,int age) {
 this.name = name;
 this.age = age;
 }
 
 public String getName() {
 return name;
 }
 
 public void setName(String name) {
 this.name = name;
 }
 
 public int getAge() {
 return age;
 }
 
 public void setAge(int age) {
 this.age = age;
 }
 
 public abstract void eat();
 
 
 public void sleep(){
 System.out.println("睡觉");
 }
 }
 
 
 class Cat extends Animal {
 public Cat(){}
 
 public Cat(String name,int age) {
 super(name,age);
 }
 public void eat() {
 System.out.println("猫吃鱼");
 }
 }
 
 
 class Dog extends Animal {
 public Dog(){}
 
 public Dog(String name,int age) {
 super(name,age);
 }
 public void eat() {
 System.out.println("狗吃肉");
 }
 }
 
 
 class JumpCat extends Cat implements Jumpping {
 public JumpCat() {}
 
 public JumpCat(String name,int age) {
 super(name,age);
 }
 
 public void jump() {
 System.out.println("跳高猫");
 }
 }
 
 
 class JumpDog extends Dog implements Jumpping {
 public JumpDog() {}
 
 public JumpDog(String name,int age) {
 super(name,age);
 }
 
 public void jump() {
 System.out.println("跳高狗");
 }
 }
 
 |