Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java语言中的继承_Java_Inheritance - Fatal编程技术网

Java语言中的继承

Java语言中的继承,java,inheritance,Java,Inheritance,我们说java遵循单一继承模型,即java类最多只能扩展一个类,然后说每个java类都是从对象类继承的 假设有两个类A和B。A和B都从Object扩展而来。现在假设A扩展了B。这是否意味着A具有多重继承性(A同时从B和类对象继承)?您可以拥有一个继承链,这不是多重继承。 一次不能有一个从多个类继承的类 语言禁止: class A extends B, C {} 你可以有一个继承链,这不是多重继承。 一次不能有一个从多个类继承的类 语言禁止: class A extends B, C {} J

我们说java遵循单一继承模型,即java类最多只能扩展一个类,然后说每个java类都是从对象类继承的


假设有两个类A和B。A和B都从Object扩展而来。现在假设A扩展了B。这是否意味着A具有多重继承性(A同时从B和类对象继承)?

您可以拥有一个继承链,这不是多重继承。 一次不能有一个从多个类继承的类

语言禁止:

class A extends B, C
{}

你可以有一个继承链,这不是多重继承。 一次不能有一个从多个类继承的类

语言禁止:

class A extends B, C
{}
Java类只能直接从一个类继承。在这种情况下,
A
不会直接从
对象继承,而只从
A
继承

您是仅仅从术语的角度提问,还是有一些行为您感兴趣?

一个Java类只能直接从一个类继承。在这种情况下,
A
不会直接从
对象继承,而只从
A
继承


您是仅仅从术语的角度提问,还是有一些行为是您感兴趣的?

对象A扩展了对象B,对象B扩展了对象。它不是多重继承,而是层次结构,对象A扩展了对象B,对象B扩展了对象。它不是多重继承,而是层次结构(Java不支持)

类扩展对象

类B扩展对象

C类扩展了A、B类

 Object
   /\
  /  \
 /    \
A      B     (Not supported by Java)
 \     /
  \   /
   \ /
    C
多级/可传递继承:(由Java支持)

类B扩展对象

A类扩展到B类

 Object
    |
    |
    |
    B        (Supported by Java)
    |
    |
    |
    A

多重继承:(Java不支持)

类扩展对象

类B扩展对象

C类扩展了A、B类

 Object
   /\
  /  \
 /    \
A      B     (Not supported by Java)
 \     /
  \   /
   \ /
    C
多级/可传递继承:(由Java支持)

类B扩展对象

A类扩展到B类

 Object
    |
    |
    |
    B        (Supported by Java)
    |
    |
    |
    A

在Java中,每个类只能从一个父类直接扩展。所以,要么B从对象扩展,要么A从B扩展,xorA和B都从对象扩展

您假设两者同时为真——这在Java中是不可能的

如果B从对象扩展,A从B扩展,则是,A确实从对象继承,但每个类仍然有一个父类:

class Object
 |
 +-- class B
      |
      +-- class A

换句话说,Java不支持多重继承。

在Java中,每个类只能从一个父类直接扩展。所以,要么B从对象扩展,要么A从B扩展,xorA和B都从对象扩展

您假设两者同时为真——这在Java中是不可能的

如果B从对象扩展,A从B扩展,则是,A确实从对象继承,但每个类仍然有一个父类:

class Object
 |
 +-- class B
      |
      +-- class A

换句话说,Java不支持多重继承。

Java不允许扩展超过1个超类。但是,一个类可以实现多个接口。您可以创建一个接口和抽象类的结构,让您可以扩展多个类。祝你好运

Java不允许扩展超过1个超类。但是,一个类可以实现多个接口。您可以创建一个接口和抽象类的结构,让您可以扩展多个类。祝你好运

多重继承的主要问题是模糊性,当两个类定义同一个方法时,同时被重写和删除。Java不受此影响,因为它只允许重写单个类。这显然是指直接重写,而不是处理继承的层次结构。这种类型的继承(A覆盖B、B覆盖等)不受任何问题的影响。

多重继承的主要问题是不明确,当两个类定义相同的方法,并且都被覆盖,并且。Java不受此影响,因为它只允许重写单个类。这显然是指直接重写,而不是处理继承的层次结构。这种继承(A覆盖B、B覆盖等)不受任何问题的影响。

看看可传递继承(C直接从B继承和可传递从A继承)之间的区别:

和多重继承(C继承自A和B):


除了具有相同签名的方法被覆盖外,所有内容都被添加。即使添加了使用相同名称声明的变量,它们也只是被称为“隐藏”,但仍然可以使用casting或super关键字(如果是直接父级)进行访问。

看看可传递继承(C直接从B继承,而可传递从A继承)之间的区别:

Excepting Object, which has no superclass, every class has one and |
only one direct superclass (single    inheritance). In the absence of any
other explicit superclass, every class is implicitly a subclass of Object.

和多重继承(C继承自A和B):

除了具有相同签名的方法被覆盖外,所有内容都被添加。即使添加了使用相同名称声明的变量,它们也只是被称为“隐藏”,但仍然可以使用casting或super关键字(如果是直接父级)进行访问

Excepting Object, which has no superclass, every class has one and |
only one direct superclass (single    inheritance). In the absence of any
other explicit superclass, every class is implicitly a subclass of Object.

在您的问题中,
A直接继承B
对象类
由B继承,而不是由
A继承。这称为传递继承


在你的问题中,
A直接继承B
,而
对象类
由B继承,而不是由
A继承。这称为传递继承

简言之,不,在单继承中,
对象
A
的超类(父类),它是
B
的超类。多重固有