个性化阅读
专注于IT技术分析

Java接口

本文概述

一个接口的java类的蓝图。静态常量和抽象方法。

Java的接口是一种机制来实现抽象。只有在Java接口,抽象方法没有方法主体。它是用于在Java中实现抽象和多重继承。

换句话说,你可以说接口可以有抽象方法和变量。它不能有方法体。

Java接口也代表着是一个关系。

抽象类不能被实例化,就像。

自Java 8日,我们可以有默认和静态方法的接口。

因为Java 9,我们可以在一个私有方法的接口。

为什么使用Java接口?

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

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

如何声明一个接口?

声明一个接口通过使用关键字的接口。它提供了抽象;意味着在一个接口中声明的所有方法的空的身体,和所有的字段是公开的,静态的,最后的默认。实现一个接口的类必须实现接口中声明的所有方法。

Syntax:

interface <interface_name>{
    
    // declare constant fields
    // declare methods that abstract 
    // by default.
}

Java 8的界面改进

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

内部由编译器

Java编译器前增加了公众和抽象的关键字接口方法。此外,它增加了公众,静态数据成员之前和最终的关键词。

换句话说,界面字段是公开的,静态的,最后在默认情况下,方法是公开的和抽象的。


类和接口的关系

如图下面,一个类继承另一个类,接口扩展另一个接口,但是一个类实现一个接口。


Java接口示例

在这个例子中,可打印接口只有一个方法,它的实现是A6类提供的。

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

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

输出:

Hello

Java接口的例子:可拉的

在这个例子中,在绘图界面只有一个方法。它的实现是由矩形和圆类提供的。在真实的场景中,一个接口被定义为别人,但它的实现是由不同的实现供应商提供。此外,它被别人。实现部分是隐藏的用户使用界面。

File: 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();
}}

输出:

drawing circle

Java接口的例子:银行

让我们看看另一个例子的java接口提供了银行接口的实现。

File: 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());
}}

输出:

ROI: 9.15

多重继承的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();
 }
}
Output:Hello
       Welcome

问)不支持多重继承类在java中,但是它是由一个接口可能,为什么?

在继承章解释说,不支持多重继承的类,因为歧义。然而,它支持在一个接口的情况下,因为没有歧义。这是因为它的实现提供的实现类。例如:

interface Printable{
void print();
}
interface Showable{
void print();
}

class TestInterface3 implements Printable,Showable{
public void print(){System.out.println("Hello");}
public static void main(String args[]){
TestInterface3 obj = new TestInterface3();
obj.print();
 }
}

输出:

Hello

正如你所看到的在上面的例子中,打印和Showable接口提供了相同的方法,但其实现类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();
 }
}

输出:

Hello
Welcome

Java 8默认方法接口

自Java 8,我们可以在接口方法主体。但是我们需要让它默认的方法。让我们看一个例子:

文件: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();
}}

输出:

drawing rectangle
default method

Java 8静态方法的接口

因为Java 8,我们可以在界面的静态方法。让我们看一个例子:

文件: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));
}}

输出:

drawing rectangle
27

Q标记或标记的接口是什么?

一个接口,它没有成员称为标记或标记接口,例如,可序列化的,可克隆,远程等等。他们是用来提供一些基本信息JVM,以便JVM可能执行一些有用的操作。

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

在Java中嵌套接口

注意:一个接口可以有另一个接口被称为一个嵌套接口。我们将学习在嵌套类一章详细介绍。例如:

interface printable{
 void print();
 interface MessagePrintable{
   void msg();
 }
}
赞(0)
未经允许不得转载:srcmini » Java接口

评论 抢沙发

评论前必须登录!