2015-08-14 61 views
-4

1:繼承代碼的可重用

class arbitrary { 
    void print() { 
     System.out.println("Hello Inheritance"); 
    } 
} 
public class inheritance extends arbitrary { 
    public static void main(String args[]) { 
     arbitrary ar = new arbitrary(); 
     ar.print(); 
    } 
} 

輸出:你好繼承

2:

class arbitrary { 
    void print() { 
     System.out.println("Hello Inheritance"); 
    } 
} 
public class inheritance extends arbitrary { 
    public static void main(String args[]) { 
     inheritance in = new inheritance(); in .print(); 
    } 
} 

輸出:你好繼承

3:

class arbitrary { 
    void print() { 
     System.out.println("Hello Inheritance"); 
    } 
} 
public class inheritance { 
    public static void main(String args[]) { 
     arbitrary ar = new arbitrary(); 
     ar.print(); 
    } 
} 

輸出:你好繼承

4:

class arbitrary { 
    void print() { 
     System.out.println("Hello Inheritance"); 
    } 
} 
public class inheritance { 
    public static void main(String args[]) { 
     inheritance in = new inheritance(); in .print(); 
    } 
} 

輸出:錯誤

第1個和第2個程序使用繼承和可重用性的概念,但在基類(即,繼承)不擴展超類(即任意)仍然運行成功。 那麼沒有擴展如何重用超類的代碼?任何人都可以幫助我弄清楚,第三方程序如何在不使用繼承和可重用性的情況下成功運行。

+0

Eeew。至少縮進你的代碼。 – Mena

+0

你能直接縮進你的代碼嗎? – 9Deuce

+0

目前還不清楚你在問什麼。第四個程序不會編譯,因爲您正嘗試在繼承對象中調用一個名爲print()的方法,該方法沒有定義該方法。所有其他示例在正在創建的對象上定義該方法。第三和第四個例子與繼承無關。 – David

回答

2

您的第一個和第三個程序實際上是相同的。

Inheritance類的擴展並不重要,因爲你並沒有真正使用它。您的main僅使用Arbitrary類,並且由於Arbitrary類具有print方法,因此它會成功並打印該消息。

你的第二個例子工作,因爲Inheritance延伸Arbitrary,並且您正在使用Inheritance類爲您的對象。由於它延伸到Arbitrary,它具有所有Arbitrary的方法,因此具有print並且將成功打印。

但是你的第四個示例使用了一個Inheritance對象。但是,儘管它的名稱不是Arbitrary,並且除main之外沒有其他方法,這意味着它也沒有print方法。因此錯誤。

你的困惑或許源於:

  • 你的信念,即方案1展示了繼承。它並不真的。您沒有使用擴展類,因此沒有使用繼承。
  • 你相信3和4具有相同的邏輯。他們不。你的第三個使用的Arbitrary類有print方法,但你的第4個使用Inheritance類,它沒有print方法。
0

第三個程序的工作原理是因爲您正在創建arbitrary類的實例,因此可以通過調用arbitrary對象來使用它的方法。

第四個並不是因爲零類連接到arbitrary類。該方法在inheritance類的範圍內不存在。

0

在第4個代碼中,inheritance類沒有任何方法,稱爲print,所以它給出錯誤。

在第三個代碼中,arbitrary對象有一個名爲print的方法,所以它運行成功。

在第二代碼中,inheritance類繼承了arbitrary類,所以它有一個叫做print的方法。