初识Java之接口

提示:书接上回,我们已经提到过了抽象类,抽象类存在的意义就是被继承,一个普通类如果继承抽象类,那么就必须重写抽象类中的抽象方法,我们也提到过可以解决不重写的方法,但是随着我们学习的深入,就必须要有一个规范来真正解决这一问题。那么这篇关于接口的文章就可以解决心中的疑惑。

文章目录

  • 接口
    • 接口的概念
    • 简单介绍接口
    • 接口的特点
  • 接口的语法规则
  • 结合接口特性实现一个小练习
  • 实现多个接口
  • 接口的继承
  • 为什么要用到接口?


接口

接口的概念

我们在现实生活中碰到到的接口有哪些,电脑的USB接口,手机的Type-c充电接口,在Java中接口的定义是⬇️:

接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。

通俗点来说,接口是一种规范,如果你想用这个接口,你必须实现我的规范。在Java中,接口可以看成是多个类的公共规范,是一种引用数据类型。

简单介绍接口

提示:一个Java文件要么是一个类或者是一个接口
我们在建立一个接口时,同样是右击src文件,选中interface,生成一个接口。

初识Java之接口_第1张图片
注意:

  • 接口的定义和类的定义是差不多的,只需要将class换成interface
  • 创建接口时,接口的命名都是以大写的字母I开头,这样就是定义了一个接口
  • 接口的命名一般是以形容词的单词,比如Shape形状,Aniaml动物,这样一个具有统称,包含多种实例的名称

接口的特点

接口也是有属性和方法的,接口的声明中方法默认是抽象方法(方法没有方法体)
接口有以下特点需要记住

  • 接口是表示一个类需要做哪些事情(想要实现这个接口,就必须重写它的方法)
  • 我们将跑步设计成接口,狮子和狗都会跑步,你要想实现跑步这个接口接口,就必须按照我的规范来完成,才有资格去实现接口。
  • 如果一个类实现了接口中的所有方法,没有方法体,那么这个类一定是抽象类,所以抽象方法只能存在于抽象类和接口中。

接口的语法规则

提示:接口不能直接使用,必须要有一个"实现类"来"实现"接口,实现接口中的抽象方法

子类和父类继承关系用extends,接口使用implements

interface  ISahpe{
   
    //实现一个接口,关键字 interface

    abstract void func();
}
class Rect  implements  ISahpe{
   
    //子类和父类继承关系是用extends,接口则使用implements实现关系

    @Override
    public void func() {
   
        System.out.println("想要实现这个接口,就必须重写接口中的抽象方法");

    }
}

public class Main {
   
    public static void main(String[] args) {
   

    }
}

关于接口的特性有多个,我们一一来解释
1.接口是一种引用类型,不能直接new对象
初识Java之接口_第2张图片
因为能包含抽象方法的只有抽象类能做到,而接口中是可以有抽象方法的,从某种意义上来说,接口也是一种抽象类,所以无法实现实例化。

2.接口只中的成员默认是使用,public static final修饰的,不写也不会报错。

初识Java之接口_第3张图片

3.接口中的方法默认是public abstract修饰的,不写也不会报错,如果使用其他修饰符都会报错。
初识Java之接口_第4张图片
4.接口中的方法不能在接口类中实现,只能由实现接口的类实现,通过关键字implements
初识Java之接口_第5张图片
接口中的方法是抽象方法,是不能直接实现的,所以必须要有一个类来实现接口中的方法。⬇️(下面代码是正确实现接口中的抽象方法)

interface  IShape{
   
        public abstract  void draw();
}
class Retc implements  IShape{
   

    @Override
    public void draw() {
   
        System.out.println("画一个矩形");
    }
}
class Flower implements  IShape{
   
    @Override
    public void draw() {
   
        System.out.println("画一朵花");
    }
}
public class Test {
   
    public static void main(String[] args) {
   
        IShape iShape=new Retc();
        IShape iShape1=new Flower();
        iShape.draw();
        iShape1.draw();
    }

你可能感兴趣的:(Java,java,开发语言)