📜  Java中的接口和继承

📅  最后修改于: 2020-03-22 14:46:20             🧑  作者: Mango

先决条件:Java和多重继承
一个类可以扩展另一个类,并且//可以实现一个或多个接口。

// Java展示一个类可以实现多个接口
import java.io.*;
interface intfA
{
    void m1();
}
interface intfB
{
    void m2();
}
// 类实现两个接口
class sample implements intfA, intfB
{
    @Override
    public void m1()
    {
        System.out.println("在方法m1内");
    }
    @Override
    public void m2()
    {
        System.out.println("在方法m1内");
    }
}
class GFG
{
    public static void main (String[] args)
    {
        sample ob1 = new sample();
        // 代用两个方法
        ob1.m1();
        ob1.m2();
    }
}

输出;

在方法m1内
在方法m2内

接口继承:接口可以扩展其他接口。

// Java展示接口的继承
import java.io.*;
interface intfA
{
    void mangoName();
}
interface intfB extends intfA
{
    void mangoInstitute();
}
// 类实现了两个接口
class sample implements intfB
{
    @Override
    public void mangoName()
    {
        System.out.println("芒果");
    }
    @Override
    public void mangoInstitute()
    {
        System.out.println("文档");
    }
    public static void main (String[] args)
    {
        sample ob1 = new sample();
        // 调用实现的方法
        ob1.mangoName();
        ob1.mangoInstitute();
    }
}

输出:

芒果
文档

接口还可以扩展多个接口。

// Java展示接口继承
import java.io.*;
interface intfA
{
    void mangoName();
}
interface intfB
{
    void mangoInstitute();
}
interface intfC extends intfA, intfB
{
    void mangoBranch();
}
// 类实现了两个接口
class sample implements intfC
{
    public void mangoName()
    {
        System.out.println("芒果");
    }
    public void mangoInstitute()
    {
        System.out.println("文档");
    }
    public void mangoBranch()
    {
        System.out.println("太棒了");
    }
    public static void main (String[] args)
    {
        sample ob1 = new sample();
        // 调用实现的接口
        ob1.mangoName();
        ob1.mangoInstitute();
        ob1.mangoBranch();
    }
}

输出:

芒果
文档
太棒了

为什么Java中的类不支持多重继承,但可以通过接口实现?
由于含糊不清,类不支持多重继承。在使用接口的情况下,没有歧义,因为直到Java 7的实现类才提供对方法的实现。从Java 8开始,接口也具有方法的实现。因此,如果一个类实现的两个或多个接口具有与实现相同的方法签名,则必须在类中也实现该方法。有关详细信息,请参见Java和多重继承