猿教程 Logo

java接口

java中的接口是类的蓝图。 它有静态常量和抽象方法。

java中的接口是一种实现抽象的机制。 在java接口中可能只有抽象方法而不是方法体。 它用于在Java中实现抽象和多重继承。

Java接口也表示IS-A关系。

它不能像抽象类一样被实例化。


为什么要使用Java接口?

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

  • 它用于实现抽象。

  • 通过接口,我们可以支持多重继承的功能。

  • 它可用于实现松耦合。


Java 8界面改进

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


由编译器内部添加

java编译器在接口方法之前添加public和abstract关键字。 更多的是,它在数据成员之前添加public,static和final关键字。

换句话说,接口字段默认是public,static和final,方法是public和abstract。


了解类和接口之间的关系

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



Java接口示例

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

相关实例:

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接口示例:Drawable

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

文件: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接口示例:Bank

让我们看看另一个提供了Bank接口实现的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());
}}

输出:

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

Q)在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();
 }
}

输出:

Hello

从上面的例子可以看到,Printable和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();
 }
}


版权声明:本站所有教程均为本站原创或翻译,转载请注明出处,请尊重他人劳动果实。请记住本站地址:www.yuanjiaocheng.net (猿教程) 作者:卿文刚
本文标题: C#环境
本文地址:http://www.yuanjiaocheng.net/Java/interface-in-java.html