Java中的接口和继承
先决条件: Java、 Java和多重继承中的接口
一个类可以扩展另一个类和/可以实现一个和多个接口。
// Java program to demonstrate that a class can
// implement multiple interfaces
import java.io.*;
interface intfA
{
void m1();
}
interface intfB
{
void m2();
}
// class implements both interfaces
// and provides implementation to the method.
class sample implements intfA, intfB
{
@Override
public void m1()
{
System.out.println("Welcome: inside the method m1");
}
@Override
public void m2()
{
System.out.println("Welcome: inside the method m2");
}
}
class GFG
{
public static void main (String[] args)
{
sample ob1 = new sample();
// calling the method implemented
// within the class.
ob1.m1();
ob1.m2();
}
}
输出;
Welcome: inside the method m1
Welcome: inside the method m2
接口继承:一个接口可以扩展其他接口。
// Java program to demonstrate inheritance in
// interfaces.
import java.io.*;
interface intfA
{
void geekName();
}
interface intfB extends intfA
{
void geekInstitute();
}
// class implements both interfaces and provides
// implementation to the method.
class sample implements intfB
{
@Override
public void geekName()
{
System.out.println("Rohit");
}
@Override
public void geekInstitute()
{
System.out.println("JIIT");
}
public static void main (String[] args)
{
sample ob1 = new sample();
// calling the method implemented
// within the class.
ob1.geekName();
ob1.geekInstitute();
}
}
输出:
Rohit
JIIT
一个接口也可以扩展多个接口。
// Java program to demonstrate multiple inheritance
// in interfaces
import java.io.*;
interface intfA
{
void geekName();
}
interface intfB
{
void geekInstitute();
}
interface intfC extends intfA, intfB
{
void geekBranch();
}
// class implements both interfaces and provides
// implementation to the method.
class sample implements intfC
{
public void geekName()
{
System.out.println("Rohit");
}
public void geekInstitute()
{
System.out.println("JIIT");
}
public void geekBranch()
{
System.out.println("CSE");
}
public static void main (String[] args)
{
sample ob1 = new sample();
// calling the method implemented
// within the class.
ob1.geekName();
ob1.geekInstitute();
ob1.geekBranch();
}
}
输出:
Rohit
JIIT
CSE
为什么Java中的类不支持多重继承,但可以通过接口实现?
由于歧义,类不支持多重继承。在接口的情况下,没有歧义,因为方法的实现是由Java 7 之前的实现类提供的。从Java 8 开始,接口也有方法的实现。因此,如果一个类实现了两个或多个具有与实现相同的方法签名的接口,则也必须在类中实现该方法。有关详细信息,请参阅Java和多重继承。