2010-02-16 50 views
23

在互聯網上關於使用Java進行肥皂開發的教程之後,我發現了this link,它爲我自己提供了一個相當不尋常的代碼。'擴展對象'是有目的還是冗餘的?

代碼:

public class SoapService extends Object { 

    /** Creates new SoapService */ 
    public SoapService() { 
    } 

/** This is the SOAP exposes method 
*/ 
    public String sayGreeting(String name) 
    { 
     return "Hello "+name; 
    } 
} 

與 '擴展對象' 的語法是什麼?我從來沒有遇到過這種類型的語法(只適用於泛型)。

這個語法是否有任何目的,或者是「笨蛋」?

+0

還有大約十幾個這樣的答案 - 搜索SO和外觀。 – Kylar

回答

34

除非對象類實際上不是java.lang.Object類(本教程不包括導入,所以很難看),extends Object是多餘的。

+18

非常想到由命名另一個類Object引起的混淆。 *不寒而慄* – Yishai

+1

即使有進口,那麼它將使用java.lang.Object,除非它被編寫爲 public class SoapService extends some.other.Object {...} –

+2

有org.omg.CORBA.Object ,但這似乎不太可能與此有關。 –

3

這只是意味着它直接從Object類繼承。 Here更多關於Java中的繼承。

+3

不會浪費我的-1,但這是沒用的。 – orbfish

9

Java中的所有對象都隱含地擴展了Object,所以我認爲它是多餘的。

6

無論如何,所有的類都擴展了Object 所以它只是冗餘編碼而沒有影響。

+0

這就是我問過的原因......本教程的作者可能正在計劃編寫一個「原始」代碼。 :) –

2

不。它只是明確地做了一些隱含的事情。

2

這是不需要的。 Java中的每個類都在一定程度上擴展了Object。除非你需要澄清一些具體的東西,否則不要說了。

1

我的投票,無用功 - 但後來我只能在Java玩...

但據我所知,任何一類從Object類繼承...

1

它是合法的,但沒用樣板。所有東西都會擴展Object,所以語言規範允許你將它拋出,而且通常應該忽略它(一些編碼標準的作者不同意)。 (擴展Object是隱含的和冗餘的),它只是由於某種原因(我已經看到了一些早期的錯誤使用泛型實現有問題的?通配符),它已經發現了一點那裏。

2

擴展子句是可選的,如Java Language Specification中所述。如果省略,則該類從java.lang.Object派生。在這種情況下寫或不寫是編碼風格的問題。通常它被省略。

4

看起來有點像生成的代碼 - 如果不需要它,那麼對於源代碼生成器省略是額外的工作,尤其是如果生成器是基於模板的。

2

這是愚蠢的代碼。 Java中的每個類都擴展了一個Object類。沒有必要輸入這個explisitly

-1

爲什麼不明確?

我想添加它 - 並非每個人都「隱含地」知道每個Java類都隱含地延伸了Object。通過明確地寫下來,他們不必猜測。

1

有一種可能性,那就是讓他不希望你延長任何課程的人。你當然可以做一個解決方法,但這是我能想出的唯一有意義的東西。

+0

確實好點! – Whimusical

0

由於java是一種面向對象的語言,因此它支持繼承其他類的屬性的繼承,例如所有Java對象都繼承自java.lang.Object類。從上面的例子中可以看出它是解釋的繼承權。請注意,所有類,無論它們是否聲明,都將從java.lang.Object繼承。

0

的任何一類,沒有明確擴展另一個類,隱式擴展對象