栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java为什么只能单继承?

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java为什么只能单继承?

Java为什么只能单继承?

一、概述

最近写的东西大多都是面试中遇到的(最近在面试),面试官问了一个Java为什么只能单继承的问题? 这个正式考察你对java的底层原理的理解。

二、Java为什么只能单继承

Java中类不能多继承类是为了安全。因为无论是抽象类还是非抽象类都包含非抽象的方法(非抽象类也可能没有),当类可以多继承类时,被继承的不同的父类可能会有同名同参的方法,如果子类也没有重写这个同名同参的方法,则在子类的实例调用这个方法的时候就会出现冲突。

例如:

class A{ eat(){}};

class B{ eat() {}};

class C extends A , B{};

C c = new C();
c.eat();

此时在执行c.eat()时,到底调用的是哪个父类方法,每办法确定,这个冲突就出现了。

三、实现多接口、接口多继承接口

当然了,java为了解决单继承问题,提供了实现多接口的功能进行扩展;以及接口可以多继承接口。

例如:

public interface InterfaceA {

    public abstract void methodA();

    public abstract void methodCommon();

    public default void methodDefault() {
        System.out.println("A");
    }

}


public interface InterfaceB {

    public abstract void methodA();

    public abstract void methodCommon();

    public default void methodDefault() {
        System.out.println("A");
    }

}

// 多继承接口
public interface InterfaceC extends InterfaceA, InterfaceB {  

    public abstract void method();

    //多个父接口当中的默认方法如果重复,那么子接口必须进行默认方法的覆盖重写
    @Override
    public default void methodDefault() {

    }
}

两个父接口A、B的中有抽象方法重复,没有关系。但是默认方法重复,则需要在子接口中重写。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/874800.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号