接口~~~

接口

接口的概述

接口就是一种公共的规范标准,只要符合规范标准,大家都可以通用

Java中的接口更多的体现在对行为的抽象

接口的特点

  • 接口用关键字interface修饰

    ​ public interface 接口名{}

  • 类实现接口用implements表示

    ​ public class 类名 implements 接口名{}

  • 接口不能实例化

    ​ 接口如何实例化呢?参照多态的方式,通过实现类对象实例化,这叫接口多态。

    ​ 多态形式:具体类多态,抽象类多态接口多态

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

  • 接口的实现类

    ​ 要么重写接口中的所有抽象方法

    ​ 要么是抽象类

接口的成员特点

  • 成员变量

    ​ 只能是常量

    ​ 默认修饰符:public static final

  • 构造方法

    ​ 接口没有构造方法,因为接口主要是对行为进行抽象的,是没有具体存在

    ​ 一个类如果没有父类,默认继承自Object类

  • 成员方法

    ​ 只能是抽象方法

    ​ 默认修饰符:public abstract

代码

Jumpping接口

public interface Jumpping {
    public abstract void jump();
}

Animal抽象类

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 abstract void eat();
}

Cat类

public class Cat extends Animal implements Jumpping{

    public Cat() {
    }

    public Cat(String name, int age) {
        super(name, age);
    }

    @Override
    public void eat() {
        System.out.println("猫吃鱼");
    }

    @Override
    public void jump() {
        System.out.println("猫可以跳高了");
    }
}

测试类

/*
    测试类
 */
public class AnimalDemo {
    public static void main(String[] args) {
        //创建对象,调用方法
        Jumpping j = new Cat();
        j.jump();
        System.out.println("------------------");

        Animal a = new Cat();
        a.setAge(5);
        a.setName("加菲");
        System.out.println(a.getName()+","+a.getAge());
        a.eat();
//        a.jump();

        a = new Cat("kuli",30);
        System.out.println(a.getName()+","+a.getAge());
        a.eat();
        System.out.println("------------------");

        Cat c = new Cat();
        c.setAge(5);
        c.setName("加菲");
        System.out.println(c.getName()+","+c.getAge());
        c.eat();
        c.jump();
    }
}

类和接口的关系

  • 类和类的关系
    • 继承关系,只能单继承,但是可以多层继承(例如:父亲继承爷爷,我继承父亲)
  • 类和接口的关系
    • 实现关系可以单实现,也可以多实现,还可以在继承一个类的同时实现多个接口
  • 接口和接口的关系
    • 继承关系,可以单继承,也可以多继承

抽象类和接口的区别

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

抽象类是对事物的抽象,而接口是对行为的抽象

形参和返回值

抽象类名作为形参和返回值

  • 方法的形参是抽象类名,其实需要的是该抽象类的子类对象
  • 方法的返回值是抽象类名,其实返回的是该抽象类的子类对象

接口名作为形参和返回值

  • 方法的形参是接口名,其实需要的是该接口的实现类对象
  • 方法的返回值是接口名,其实返回的是该接口的实现类对象
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值