繁体   English   中英

一个类如何在Java中扩展两个类?

[英]How can a class extend two classes in Java?

如果Java只能扩展一个类,并且每个类都扩展了java.lang.Object ,那么它如何扩展另一个类呢? 为什么每个类都没有编写extends Object

如果java只能扩展一个类,并且每个类扩展java.lang.Object,它如何扩展另一个类?

当你说A扩展B时,则意味着A扩展B而B扩展了Object 一个类可以继承自另一个类,它可以从另一个类继承,并且在链的顶部是java.lang.Object Java不支持多继承,但支持多级继承。

为什么每个班级都没有写“extends Object”?

所有类都隐式扩展Object ,因此它将是冗余编码。

由于java.lang.Object是Java中每个对象的父级,因此您不必显式编写extends Object

您可以随时扩展任何课程。 如果您需要具有2个类的行为 - 您需要使用接口

Java中的每个类都隐式地扩展了类Object ,并且您只有扩展一个类和无限数量接口的权限。

如果您没有编写构造函数,则为每个类创建一个默认构造函数。

所以当你说

class A{

}

它实际上是这样的:

class A extends Object{
    A(){
        super();
    }
}

但是当你说的时候

class B extends A

在这种情况下,类B将具有类A的特性,并且因为A扩展了Object,所以类B也将继承类Object。

A - >对象
B - > A.
所以
B - >对象

允许扩展的唯一一个也最终扩展了Object类。因为你没有扩展两次。

Java中不支持多重继承,您只能直接继承(可以这么说)。 你使用接口,这是IMO更强大的。 我从不需要多重继承,但我大量使用接口。 基本上不是创建第二个类,而是定义一个接口,然后让一些类实现它。 这可以是不同的类或相同的。

所有类都已从Objects派生,您无需专门编写。

以下每个都可以将对象扩展到左侧:
对象 - >车辆 - >车 - > Coupe - > Camaro

因此,例如, Coupe正在扩展Car ,它不是(直接)扩展Object ...只是如果你继续上升链,你最终会得到Object

但是,你无法让Coupe扩展CarTruck

这是一个示例,显示了Java的java.lang.Number类的类层次结构。

http://docs.oracle.com/javase/tutorial/java/data/numberclasses.html

如您所见,Integer类继承自Number,而Number继承自Object。 因此,您可以通过链接来继承多个类。

在面向对象编程(OOP)中,继承描述了对象的两种类型或类之间的关系,其中一个被称为另一个的子类型或子类。

A -> B -> C -> D

子项继承父项的功能,允许共享功能。 例如,可以创建一个变量类Animal,其中包含吃等等功能。 然后定义一个继承这些功能的子类型Dog,而不必显式编程,同时添加追逐猫等新功能。

多重继承允许程序员同时使用多个层次结构,例如允许Dog从Robot角色和Animal继承并从所有这些类中访问功能。

        A
       / \
      C   D
       \ /
        E 

Java使用第一个模型,因此继承自object和另一个类不会导致问题,因为它本质上是分层的。

Object -> Animal -> Dog -> Pit Bull

每个对象不需要扩展Object的原因是它隐式发生。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM