首页 > 编程语言 >Java接口

Java接口

时间:2023-02-04 23:13:29浏览次数:47  
标签:Java void 接口 print interface public

java中的接口是类的蓝图。 它有静态常量和抽象方法。java中的接口是一种实现抽象的机制。 接口中只有抽象方法而不是方法体。接口用于在Java中实现抽象和多重继承。

Java接口也表示IS-A关系。它不能像抽象类一样被实例化。

为什么要使用Java接口?

需要使用接口主要有三个原因。如下面给出。

  • 它用于实现抽象。
  • 通过接口,可以支持多重继承的功能。
  • 它可用于实现松耦合。

Java 8接口的改进

由于Java 8,接口可以有默认和静态方法,稍后讨论。

由编译器内部添加
java编译器在接口方法之前添加publicabstract关键字。还有,它在数据成员之前添加publicstaticfinal关键字。

换句话说,接口字段默认是publicstaticfinal,方法默认是publicabstract

了解类和接口之间的关系

如下图所示,一个类扩展了另一个类,一个接口扩展了另一个接口,一个类实现了一个接口。

Java接口示例

在这个例子中,Printable接口只有一个方法,它的实现是在A类中提供的。

interface printable {
    void print();
}

class A6 implements printable {
    public void print() {
        System.out.println("Hello, Interface");
    }

    public static void main(String args[]) {
        A6 obj = new A6();
        obj.print();
    }
}
Java

上面代码执行结果如下 -

Hello, Interface
Java

Java接口示例:Drawable

在这个例子中,Drawable接口只有一个方法。 它的实现由RectangleCircle类提供。 在实际情况下,接口由一些开发者定义,但实现由不同的实现提供者提供。 并且它被别人使用。实现部分被使用接口的用户隐藏。

创建一个 Java 文件:TestInterface1.java,其代码如下 -

//Interface declaration: by first user  
interface Drawable {
    void draw();
}

// Implementation: by second user
class Rectangle implements Drawable {
    public void draw() {
        System.out.println("drawing rectangle");
    }
}

class Circle implements Drawable {
    public void draw() {
        System.out.println("drawing circle");
    }
}

// Using interface: by third user
class TestInterface1 {
    public static void main(String args[]) {
        Drawable d = new Circle();// In real scenario, object is provided by
                                    // method e.g. getDrawable()
        d.draw();
    }
}
Java

执行上面代码得到以下结果 -

drawing circle
Java

Java接口示例:Bank

让我们来看看另一个提供了Bank接口实现的java接口的例子。创建一个 Java 文件:TestInterface2.java,其代码如下 -

interface Bank {
    float rateOfInterest();
}

class SBI implements Bank {
    public float rateOfInterest() {
        return 9.15f;
    }
}

class PNB implements Bank {
    public float rateOfInterest() {
        return 9.7f;
    }
}

class TestInterface2 {
    public static void main(String[] args) {
        Bank b = new SBI();
        System.out.println("ROI: " + b.rateOfInterest());
    }
}
Java

执行上面代码得到以下结果 -

ROI: 9.15
Java

Java多继承接口

如果一个类实现了多个接口,或者一个接口扩展了多个接口,即被称为多重继承。

参考以下示例代码的实现 -

interface Printable {
    void print();
}

interface Showable {
    void show();
}

class A7 implements Printable, Showable {
    public void print() {
        System.out.println("Hello");
    }

    public void show() {
        System.out.println("Welcome");
    }

    public static void main(String args[]) {
        A7 obj = new A7();
        obj.print();
        obj.show();
    }
}
Java

执行上面代码得到以下结果 -

Hello
Welcome
Java

问题:在java中不支持通过类实现多继承,但可通过接口实现,为什么?

正如在继承章节中所解释的,在类中不支持多重继承是因为模糊。 但是在接口的情况下可以支持,因为接口没有歧义,接口的具体实现由实现类提供。 例如:

interface Printable {
    void print();
}

interface Showable {
    void print();
}

class TestTnterface3 implements Printable, Showable {
    public void print() {
        System.out.println("Hello");
    }

    public static void main(String args[]) {
        TestTnterface1 obj = new TestTnterface1();
        obj.print();
    }
}
Java

上面代码执行得到以下结果 -

Hello
Java

从上面的例子可以看到,PrintableShowable接口有相同的方法,但它的实现是由TestTnterface1类提供的,所以没有歧义。

接口继承

类可以实现多个接口,但接口也扩展另一个接口。

interface Printable {
    void print();
}

interface Showable extends Printable {
    void show();
}

class TestInterface4 implements Showable {
    public void print() {
        System.out.println("Hello");
    }

    public void show() {
        System.out.println("Welcome");
    }

    public static void main(String args[]) {
        TestInterface4 obj = new TestInterface4();
        obj.print();
        obj.show();
    }
}
Java

执行上面代码,得到如下结果 -

Hello
Welcome
Java

Java 8接口中的默认方法

从Java 8开始,我们可以在接口中有方法体。 但需要使其为默认方法。现在来看看一个例子,创建一个Java文件:TestInterfaceDefault.java,其代码如下 -

interface Drawable {
    void draw();

    default void msg() {
        System.out.println("default method");
    }
}

class Rectangle implements Drawable {
    public void draw() {
        System.out.println("drawing rectangle");
    }
}

class TestInterfaceDefault {
    public static void main(String args[]) {
        Drawable d = new Rectangle();
        d.draw();
        d.msg();
    }
}
Java

执行上面代码,得到如下结果 -

drawing rectangle
default method
Java

Java 8接口中的静态方法

从Java 8开始,我们可以在接口中有静态方法。 让我们来看看下面的一个例子,创建一个Java文件:TestInterfaceStatic.java 其代码如下:

interface Drawable {
    void draw();

    static int cube(int x) {
        return x * x * x;
    }
}

class Rectangle implements Drawable {
    public void draw() {
        System.out.println("drawing rectangle");
    }
}

class TestInterfaceStatic {
    public static void main(String args[]) {
        Drawable d = new Rectangle();
        d.draw();
        System.out.println(Drawable.cube(3));
    }
}
Java

执行上面代码,得到如下结果 -

drawing rectangle
27
Java

问题:什么是标记或标记的接口?

没有成员的接口(仅定义一个空的接口)称为标记或标记接口。 例如:可序列化,可克隆,远程等。它们用于向JVM提供一些基本信息,以便JVM可以执行一些有用的操作。

//How Serializable interface is written?  
public interface Serializable{  
}
Java

Java嵌套接口

注意: 一个接口中可以有另一个接口,即被称为嵌套接口。有关于这方面的知识,将在嵌套类的章节中详细学习。 例如:

interface printable {
    void print();

    interface MessagePrintable {
        void msg();
    }
}
//更多请阅读:https://www.yiibai.com/java/interface-in-java.html#article-start

标签:Java,void,接口,print,interface,public
From: https://www.cnblogs.com/cnetsa/p/17092591.html

相关文章

  • java中使用xml基础
    XML概述XML的全称为(EXtensibleMarkupLanguage),是一种可扩展的标记语言标记语言:通过标签来描述数据的一门语言(标签有时我们也将其称之为元素)可扩展:标签的名字是......
  • IDEA中如何利用Maven给JAVA添加第三方库和打包问题
    从今天开始,遇到技术上的问题都会在这里写下来,虽然有可能都是小儿科问题,但是自己成功解决出来,还是很开心的。从很久之前,我就在java导包的过程中遇到问题,他不像python那......
  • java学习
    java学习快捷键1.psvm和sout(打印输出的快捷键)2.在使用浮点类型时注意浮点数是一个近似值,在处理银行业务时需要使用的是BigDecimal数学工具类3.在强制转换类型的时候......
  • Java多线程01——多线程的创建
    1进程和线程进程:进程是并发执行程序在执行过程中,资源分配和管理的基本单位。进程可以理解为一个应用程序的执行过程,应用程序一旦执行,就是一个进程。线程:线程是进程的一个执......
  • java基础:数组
    概述数组是相同类型数据的有序集合可以是任何类型每一个数据被称为该数组的一个数组元素,可以使用下标访问每一个元素下标从0开始,按顺序递增数组长度是固定的,创建后不......
  • 【测试】JMeter接口调用衔接
    在压力测试的过程中我们可以通过新建解析器来使接口数据衔接到下一个接口已达到更准确的测试效果。首先新建一个JSONExtractor,通过JSONExtractor来解析返回数据获取需要......
  • java基础:方法
    方法方法是解决一类问题的步骤的有序组合包含于类/对象中设计原则方法的原子性:一个方法只实现一个功能定义与调用方法的组成:方法的调用若方法返回值为空......
  • Java instanceof运算符
    javainstanceof运算符用于测试指定对象是否是指定类型(类或子类或接口)的实例。java中的instanceof也称为类型比较运算符,因为它将类型与实例进行比较。它返回true或fal......
  • Java静态绑定和动态绑定
    将方法调用连接到方法体称为绑定。在java中有两种类型的绑定:静态绑定(也称为早期绑定)。动态绑定(也称为后期绑定)。了解类型下面让我们来了解实例的类型。1.变......
  • Android集成mupdf,实现手写笔签字,手指翻页的java代码
    importandroid.graphics.Bitmap;importandroid.graphics.Color;importandroid.graphics.RectF;importandroid.util.Log;importjava.util.LinkedList;importc......