簡體   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