Java中,接口是否继承自Object?

文章探讨了Java中接口是否继承自Object的问题。作者最初认为接口并不继承Object,以避免多继承带来的冗余,但经过老师的解释和代码验证,发现接口确实继承了Object。通过反编译接口和使用反射获取方法,作者揭示了虽然接口在反编译时显示继承Object,但在反射过程中由于特定的实现原因,无法直接获取到相关方法。
摘要由CSDN通过智能技术生成

Java中,接口是否继承自Object?

说来惭愧,一直没想到过这个问题,女友老师灵魂一问,让我如梦初醒~

网上有这么说的:

在c++中的多继承,造成了一定程度的冗余,例如,基类B和C继承自基类A,现在有一个基类D,继承自B和C,形成了一个菱形的继承关系,当创建一个D的实例时,会同时创建两个A类的构造器,这不仅在使用上要进行区分,还对内存造成了一定量的浪费。
现在我们回到java,假如有一个接口Inter,一个基类A(继承Object),这时有一个基类B继承基类A,同时实现接口Inter,如果说interface继承自Object类,那么又会出现在c++上的多继承冗余问题,这违背了java单继承的初衷,所以我认为是没有继承Object类的

哦~有点道理

但老师说:是继承的!

空口无凭,上代码:

/**
 * @author sxy
 * @Description
 * @Date 2022/3/30
 */
public interface InterfaceFather {
   

}

一个空接口,反编译一下:

在这里插入图片描述

所以,老师说,接口是继承Object滴

可我还是感觉上面那位兄弟说的没毛病,,

那我只能自己动手,丰衣足食了,还是上面那个空接口,再新建一个空类:

/**
 * @author sxy
 * @Description
 * @Date 2022/3/30
 */
public class ClassFather {
   
  
}

然后通过反射获取他俩及其父类的方法:

/**
 * @author sxy
 * @Description
 * @Date 2022/3/30
 */
public class InterfaceFatherTest {
   
    public static void main(String[] args) {
   
        Class<InterfaceFather> interfaceClazz = InterfaceFather.class;
        Method[] interfaceMethods = interfaceClazz.getMethods();
        // 获取到的方法个数为0
        System.out.println(interfaceMethods.length);

        InterfaceFather interfaceFather = null;
        // 能访问Object里的方法(虽然不能运行)
        interfaceFather.hashCode<
  • 10
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值