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

java为什么不能多继承

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

java为什么不能多继承

概述

多重继承是面向对象概念的一个特性,其中一个类可以继承多个父类的属性。当超类和子类中都存在具有相同签名的方法时,就会出现问题。在调用该方法时,编译器无法确定要调用哪个类方法,甚至在调用哪个类方法时也无法确定优先级。

java不支持类的多继承,但是可以通过接口或内部类来曲线实现多继承。

为什么不支持多继承

请看下面的代码,它将编译报错:

public class MultiInheritTest {

@Test

public void SonTest() {

Son son = new Son();

son.fun();

}

}

class Parent1 {

public void fun() {

System.out.println("parent1");

}

}

class Parent2 {

public void fun() {

System.out.println("parent2");

}

}

// 编译报错: 类不支持多继承

class Son extends Parent1, Parent2 {

}

输出:

compile error

以上例子可以看出,当多个父类有同样的方法签名时,子类将不知道调用哪一个父类的方法。

钻石问题

GrandParent

/

/

Parent1 Parent2

/

/

Son

// 祖父类

class GrandParent

{

void fun()

{

System.out.println("Grandparent");

}

}

// 父类1

class Parent1 extends GrandParent

{

void fun()

{

System.out.println("Parent1");

}

}

// 父类2

class Parent2 extends GrandParent

{

void fun()

{

System.out.println("Parent2");

}

}

// Error : 不支持多继承

class Test extends Parent1, Parent2

{

public static void main(String args[])

{

Test t = new Test();

t.fun();

}

}

为了避免这种复杂性,java不支持多继承

简化复杂性

多继承带来很多复杂性,容易在各种操作过程中产生问题,比如强制类型转换、构造函数链接等,而最重要的原因是,实际上需要多继承的场景非常少,所以为了保持事情的简单和直观,干脆不支持多继承。

参考资料

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

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

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