【Java】接口和类之间的关系

一、类和类的关系

类和类之间是继承关系,只能单继承,不能多继承,但是可以多层继承。

二、类和接口的关系

类和接口之间是实现关系,可以单实现,也可以多实现;还可以在继承一个类的同时,实现多个接口。

细节:在实现类中,如果你实现了多个接口的话,那就需要将所有的抽象方法全部重写才可以。

问题:那如果多个接口中有重名的抽象方法,那该怎么办呢?

Inter1.java

package com.itheima.a03interfacedemo3;

public interface Inter1 {
    public abstract void method1();
    public abstract void method2();
    public abstract void method3();
}

Inter2.java

此时 Inter1 和 Inter2 中是没有重名的方法的。

package com.itheima.a03interfacedemo3;

public interface Inter2 {
    public abstract void method4();
    public abstract void method5();
    public abstract void method6();
}

InterImpl.java

InterImpl实现类 实现 Inter1,Inter2 这两个接口的时候,需要重写里面所有的抽象方法。

使用IDEA的快捷提示操作,默认全选所有的抽象方法。

它会提示你:在 Inter1 中有 1、2、3 这三个抽象方法,在 Inter2 中有 4、5、6 这三个抽象方法

image-20240418093222907

然后点击OK即可。

package com.itheima.a03interfacedemo3;

public class InterImpl implements Inter1,Inter2{
    @Override
    public void method1() {

    }

    @Override
    public void method2() {

    }

    @Override
    public void method3() {

    }

    @Override
    public void method4() {

    }

    @Override
    public void method5() {

    }

    @Override
    public void method6() {

    }
}

那如果接口中,有重名的该怎么办?

修改 Inter2 接口,此时 1、2、3 抽象方法是与 Inter1 中的抽象方法重名的。

package com.itheima.a03interfacedemo3;

public interface Inter2 {
    public abstract void method1();
    public abstract void method2();
    public abstract void method3();
    public abstract void method4();
}

此时再次用鼠标点击红色波浪线,alt + 回车 选择第一个,

image-20240418093634431

这个时候你就发现了,Inter1 里面的 1、2、3 我们需要重现,但是在 Inter2 中,我们只需要重写 method4() 就可以了。

image-20240418093749215

package com.itheima.a03interfacedemo3;

public class InterImpl implements Inter1,Inter2{

    @Override
    public void method1() {
        System.out.println("method1");
    }

    @Override
    public void method2() {
        System.out.println("method2");
    }

    @Override
    public void method3() {
        System.out.println("method3");
    }

    @Override
    public void method4() {
        System.out.println("method4");
    }
}

因此,多个接口中有重名的方法,我们只需要重写一次就可以了。

这里以 method1() 为例,重写的这一次,重写的 method1() 即表示我重写了 Inter1接口 中的 method1() 方法,又表示我重写了 Inter2接口 中的method1() 方法。


三、接口和接口的关系

接口与接口直接是继承关系,而且可以单继承,也可以多继承。

PS:如果实现类,实现的是最下面的子接口的话,那么就需要重写这个 接口体系 所有的抽象方法。

代码实现

Inter1.java

package com.itheima.a04interfacedemo4;

public interface Inter1 {
    public abstract void method1();
}

Inter2.java

package com.itheima.a04interfacedemo4;

public interface Inter2 {
    public abstract void method2();
}

Inter3.java

PS:这里 Inter3接口 继承了 Inter1接口Inter2接口

package com.itheima.a04interfacedemo4;

public interface Inter3 extends Inter1,Inter2{
    public abstract void method3();
}

InterImpl.java

此时实现类实现的是 Inter3接口。此时需要将整个接口体系(即Inter1Inter2Inter3)中所有的抽象方法全部重写,少写一个都会报错。

image-20240418094705967

package com.itheima.a04interfacedemo4;

public class InterImpl implements Inter3{
    @Override
    public void method1() {

    }

    @Override
    public void method2() {

    }

    @Override
    public void method3() {

    }
}

四、总结

1、类和类之间是继承关系,只能单继承,不能多继承,但是可以多层继承。

2、类和接口之间是实现关系,可以单实现,也可以多实现;还可以在继承一个类的同时,实现多个接口。

实现多个接口的时候需要重写里面所有的抽象方法。

3、接口与接口直接是继承关系,而且可以单继承,也可以多继承。

如果实现类,实现的是最下面的子接口的话,那么就需要重写这个 接口体系 所有的抽象方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值