2020-06-21接口

作者: 智障猿 | 来源:发表于2020-06-21 17:51 被阅读0次

    接口

    • 接口的特点
    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接口

        本文链接:https://www.haomeiwen.com/subject/mhraxktx.html