接口概述:

接口就是一种公共的规范标准,只要符合规范标准,大家都可以通过Java中的接口更多的体现在对行为的抽象。

接口的特点:

接口用interface关键字修饰。

public interface 接口名字{}

类和接口之间是实现关系, 用implements关键字表示。

public class 类名 implements 接口名{}

接口不能实例化

— 那接口如何实例化呢?可以通过多态的方式, 创建其子类对象, 来完成接口的实例化。

— 多态的形式:具体类多态,抽象类多态,接口多态。

— 多态的前提:有继承或者实现关系;重写父类所有的方法;有父(类/接口)引用指向(子/实现)类对象。

接口的实现类:

— 要么重写父接口中所有的抽象方法。

— 要么是抽象类。

/**
 * 接口
 */
public interface Jumpping {
    //抽象方法
    public abstract void jump();
}
*****这里接口中的抽象方法可以省略 public 和 abstract两个关键字。****
public class Cat implements Jumpping {
    // 重写父类中的所有抽象方法
    @Override
    public void jump() {
        System.out.println("猫要跳上楼顶............");
    } 
    //子类成员方法
    public void eat(){
        System.out.println("猫吃鱼.....");
    }
}
/**
 * 测试类
 */
public class TestJumping {
    public static void main(String[] args) {
        //创建对象 测试接口多态
        Jumpping j1 = new Cat();
        j1.jump();  //猫要跳上楼顶............
        //测试子类对象
        Cat c1 = new Cat();
        c1.eat();  //猫吃鱼.....
        //向下转型
        Cat c2 = (Cat)j1;
        c2.eat();  //猫吃鱼.....  了解
    }
}

接口的成员特点:

成员变量:

— 只能是常量 默认有修饰符:public static final

构造方法:

— 接口没有构造方法,因为接口主要是对行为进行抽象的,是没有具体存在。一个类如果没有父类,默认继承自Object类

-成员方法:

— 只能是抽象方法 默认修饰符:public abstract

//接口类
public interface Study {
    int a = 20;     //这里的变量在接口中  相当于一个静态常量
    final int c = 50;
    static final int d = 50;
    // 新特性 有一个静态方法
    static void method1(){
        System.out.println("我是JDK1.8的新特性: 接口中可以写静态方法");
    }
    //新特性  有一个默认方法
    default void method2() {
        System.out.println("我是JDK1.8的新特性: 接口中可以写默认方法");
    }
    //抽象方法   省略了 public abstract
    void eat();
    void code();
}
//  实现类
public class StudyImpl implements Study {
    @Override
    public void eat() {
        System.out.println("学生要吃东西........");
    }
    @Override
    public void code() {
        System.out.println("吃完东西就好好敲代码..");
    }
}
//测试类
public class TestStudy {
    public static void main(String[] args) {
        //接口多态写法
        Study s = new StudyImpl();
        s.eat();   //学生要吃东西........
        s.code();  //吃完东西就好好敲代码..
    }
}

类和接口之间的关系:

类和类之间的关系: 继承关系,只能单继承,但是可以多层次。

类和接口之间的关系: 实实现关系, 可以单实现, 也可以多实现. 还可以在继承一个类的同时实现多个接口。

接口与接口之间: 继承关系, 可以单继承, 也可以多继承。

抽象类和接口的区别(记忆)

成员区别:

抽象类

​变量,常量;有构造方法;有抽象方法,也有非抽象方法

接口

​常量;抽象方法

关系区别:

类与类

​继承,单继承

类与接口

​实现,可以单实现,也可以多实现

接口与接口

​继承,单继承,多继承

设计理念区别

抽象类

​对类抽象,包括属性、行为

接口

​对行为抽象,主要是行为