2012-03-20 78 views

回答

14

您的類擴展了其他類,但它也擴展了Object,所以您仍然處於一行繼承中,而不是兩行。

4

沒有指定擴展名的每個Java類都會自動擴展Object。因此,如果從另一個類擴展,則會有一些不擴展類的端點擴展,並且默認爲Object。這會導致每個類傳遞擴展Object。

1

不完全是...... 您可以一次從一個類繼承,但沒有任何東西阻止這個類擁有父類本身。 「

3

」不,這是對隱式對象繼承的一種誤解,每個Java類最終都是從Object超類繼承而來,無論是否存在擴展的Object語句,如果擴展了應用程序編程接口(API)類,對象繼承是通過直接超類傳遞的,而不是從超類和Object類傳遞。從Object類的隱式繼承通過一行父類繼承,以確保所有用戶定義的類都具有標準的toString(),equals()和hashCode()方法「

其他答案在這裏 - Inheritance in java and Superclasses(Object, Class)

6

號你允許編輯只擴展一個類,但這個類本身可以擴展另一個類。如果您沒有在extends子句中指定任何超類,則可以直接從Object擴展。如果你在extends子句中指定了一個類,那麼你可以從這個擴展它自己的超類等的類擴展到Object。

13

否。在Java中,一個類只能從一個類繼承,默認情況下這是您引用的Object類。然而,我們可以指定一個不同的類來繼承(使用'extends'關鍵字)。然而,這個父類本身會有一個父類,等等,直到最終我們回到Object類。也許一個例子將有助於:

class Animal { 
} 

class Cat extends Animal { 
} 

class Tiger extends Cat { 
} 

在上面的例子虎從貓從動物,其中(默認情況下)從對象繼承繼承繼承。

希望這可以讓事情變得輕鬆一些。

0
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

namespace MyExamples 
{ 
    public class Object 
    { 
     static void Main(string[] args) 
     { 
     } 
     public void A1() 
     { 
     } 
    } 
    public class B : Object 
    { 
     public void B1() 
     { 
     } 
    } 

    public class D : B 
    { 
     public void D1() 
     { 
      D obj = new D(); 
      obj.A1(); 
     } 
    } 
} 

//這是這樣的,如果一個類繼承另一個類的話,我在想,它不會擴展對象類了 //但父類將實施對象類...這是相當於多級繼承 //像D一樣擴展B,但B不再擴展對象類 //和B默認擴展對象類。因此,如果我們創建d的一個目的則我們可以訪問對象類太

0

類A //內部延伸對象類

{

}

公共類別B延伸的// JVM不會在這裏擴展對象類,因爲A已經擴展了對象

{

}

+0

你能提供一些關於你在這裏做什麼的解釋嗎? – bwegs 2015-03-19 14:55:35

+0

1,對象類是每個類的超類 – 2015-03-26 04:49:24

+0

對象類是每個類的超類,但關係是多級而不是多級。這裏,類A不會繼承任何內部類,因此在內部繼承了類A的對象類,但類B正在擴展類A,因此另一個類(對象類)無法在此處擴展。但是Object Class仍然是Class B的超類,因爲Class A在內部擴展了Object類。 (對象---->甲-----> B) – 2015-03-26 05:00:27