Java---接口讲解


1. 接口概述

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

 2. 参考生活中的接口可以理解,比如下图:

在这里插入图片描述

在这里插入图片描述

2. 接口特点

 1. 接口用关键字interface修饰:public interface 接口名{}

 2. 类实现接口用implements表示:public class 类名 implements 接口名{}

 3. 接口不能实例化。要参照多态的形式,通过实现类对象实例化,这叫接口多态。

 4. 接口的实现类:要么重写接口中的所有抽象方法,要么是抽象类。

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

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

public class Demo {
    public static void main(String[] args) {
        Inter j=new Cat();
        j.jump(); //输出:猫可以跳高了
    }
}

3. 接口成员特点

 1. 成员变量:只能是常量。默认修饰符:public final。所以可以不写。

 2. 构造方法:接口没有构造方法,因为接口主要是对行为抽象的。一个类如果没有父类,默认继承Objiect

 3. 抽象方法:只能是抽象方法。默认修饰符:public abstract。所以可以不写。

public interface Inter {
   public int age=10;
   public final int age2=20;
   int age3=30;
}

public class InterImple implements Inter {}

public class Demo {
    public static void main(String[] args) {
        Inter j = new InterImple();
        //j.age=30; 会报错
        System.out.println(j.age);  //输出:10
        System.out.println(j.age2); //20
        System.out.println(j.age3); //30
        
        //直接接口.成员,也可以
        System.out.println(Inter.age3);//30
    }
}

4. 小案例应用

public abstract class Animal {
    private int age;
    private String name;
    public Animal(){}
    public Animal(String name,int age) {
        this.name = name;
        this.age = age;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public abstract void eat();
}

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

public class Cat extends Animal implements Inter{
    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 Demo {
    public static void main(String[] args) {
        Inter i=new Cat();
        i.jump();  //猫可以跳高
        Animal a=new Cat("加菲猫",5);
        System.out.println(a.getName()+" "+a.getAge()+"岁"); //加菲猫 5岁
        a.eat(); //猫吃鱼
    }
}

5. 类和接口的关系

 1. 类和类的关系:继承关系,只能单继承,但是可以多层继承。

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

 3. 继承关系:可以单继承,也可以多继承。

public interface Inter1 {
}

public interface Inter2 {
}

public interface Inter3 extends Inter1,Inter2{
}

public class lei extends Object implements Inter1,Inter2,Inter3{
}

6. 抽象类和接口区别

 1. 成员区别:(1) 抽象类:变量,常量;有构造方法;有抽象方法,也有非抽象方法。 (2) 接口:常量,抽象方法。

 2. 关系区别:(1) 类与类:继承和单继承。 (2) 类与接口:实现,可以单实现也可以多实现。 (3) 接口与接口:继承,可以单继承也可以多继承。

 3. 如下面这个门的例子。再次强调:抽象类是对事物的抽象,而接口是对行为的抽象。

在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
JAVA-ACE-架构师系列视频教程RocketMQ订单实战上目录介绍: 1001_RocketMQ_简介 2002_RocketMQ_核心概念详解 3003_RocketMQ_集群构建模型详解(一) 4004_RocketMQ_集群构建模型详解(二) 5005_RocketMQ_双主模式集群环境搭建 6006_RocketMQ_控制台使用讲解 7007_RocketMQ_Broker配置文件详解 8008_RocketMQ_helloworld示例讲解 9009_RocketMQ_整体架构概述详解 10010_RocketMQ_Producer_API详解 11011_RocketMQ_Producer_顺序消费机制详解 12012_RocketMQ_Producer_事务消息机制详解 13013_RocketMQ_Consumer_Push和Pull模式及使用详解 14014_RocketMQ_Consumer_配置参数详解 15015_RocketMQ_Consumer_重试策略详解 16016_RocketMQ_Consumer_幂等去重策略详解 17017_RocketMQ_消息模式及使用讲解 18018_RocketMQ_双主双从集群环境搭建与使用详解 19019_RocketMQ_FilterServer机制及使用详解 20020_RocketMQ_管理员命令 JAVA-ACE-架构师系列视频教程RocketMQ订单实战下目录介绍: 101_rocketmq_实战项目介绍(免费观看) 202_rocketMQ实战项目设计(一) 303_rocketMQ实战项目设计(二) 404_rocketMQ实战-环境搭建(一) 505_rocketMQ实战-环境搭建(二) 606_rocketMQ实战-生产者与spring结合 707_rocketMQ实战-消费者与spring结合 808_rocketMQ实战-数据库模型设计 909_rocketMQ实战-数据库DAO代码生成 1010_rocketMQ实战-远程RPC接口设计与实现(一) 1111_rocketMQ实战-远程RPC接口设计与实现(二) 1212_rocketMQ实战-远程RPC接口设计与实现(三) 1313_rocketMQ实战-下单流程(一) 1414_rocketMQ实战-下单流程(二) 1515_rocketMQ实战-下单流程(三) 1616_rocketMQ实战-下单流程(四) 1717_rocketMQ实战-下单流程(五) 1818_rocketMQ实战-下单流程(六) 1919_rocketMQ实战-下单流程(七) 2020_rocketMQ实战-下单流程(八)-商品库存 2121_rocketMQ实战-下单流程(九)-商品库存 2222_rocketMQ实战-下单流程(十)-支付模块 2323_rocketMQ实战-整体联调

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冒冒菜菜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值