2020-06-21接口

接口

  • 接口的特点
  1. 接口用关键字interface修饰:public interface 接口名{}
  2. 类实现接口用implements表示:public class 类名 implements 接口名{}
  3. 接口不能实例化:参照多态的方式,通过实现类对象实例化,叫做接口多态
  4. 接口的实现类
    要么重写接口中所以抽象方法
    要么是抽象类
  • 接口的成员特点
  1. 成员变量
    只能是静态常量
    默认修饰符:public static final
  2. 构造方法
    接口没有构造方法,因为接口主要是对行为进行抽象。
    一个类如果没有父类,默认继承自Object类。
  3. 成员方法
    只能是抽象方法
    默认修饰符:public abstract

接口实例

  • 动物抽象父类
public abstract class 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 void eat(){
        System.out.println("动物要吃饭!");
    }
}
  • 行为接口
public interface Jumping {
    public abstract void jumpheight();
}

  • Cat类
public class Cat extends Animal implements Jumping{
    public Cat(String name, int age) {
        super(name, age);
    }
    @Override
    public void jumpheight() {
        System.out.println("小猫经过训练,学会跳高!");
    }

    @Override
    public void eat() {
        System.out.println("猫吃鱼!");
    }
}
  • 测试类
public class AnimalDemo {
    public static void main(String[] args) {
        Animal animal = new Cat();
        animal.setAge(18);
        animal.setName("加菲猫");
        System.out.println(animal.getName()+animal.getAge());
        animal.eat();
        //animal.jumpheight();报错因为父类中没有jumpheight方法

        Jumping j = new Cat();
        j.jumpheight();
        //j.eat();报错因为接口中没有eat方法

        Cat cat = new Cat();
        cat.setName("波斯猫");
        cat.setAge(18);
        cat.eat();
        cat.jumpheight();
    }
}

类与接口的关系

  • 类和类的关系
    继承关系,只能单继承,但是可以多层继承
  • 类和接口的关系
    实现关系,可以单实现,也可以多实现,还可以在继承一个类的同时实现多个接口
  • 接口和接口的关系
    继承关系,可以单继承,也可以多继承

抽象类和接口的区别

  • 成员区别
    抽象类:变量,常量,构造方法,抽象方法,非抽象方法
    接口:静态常量,抽象方法
  • 关系区别
    类与类:继承,单继承
    类与接口:实现,可以单实现也可以多实现
    接口与接口:继承,单继承,多继承
  • 设计理念区别
    抽象类:对类抽象包括属性,行为
    接口:对行为抽象,主要是行为

你可能感兴趣的:(2020-06-21接口)