重寫方法我有一個方法,如 //基類不同的變量名
public void foo(long A, long b,long c)
{
//Implementation 1
}
//Derived Class
public void foo(long AA,long b,long c)
{
//Implementation 2
}
我想什麼是錯的這個設計? FYI: 我使用代理模式爲我設計
感謝
重寫方法我有一個方法,如 //基類不同的變量名
public void foo(long A, long b,long c)
{
//Implementation 1
}
//Derived Class
public void foo(long AA,long b,long c)
{
//Implementation 2
}
我想什麼是錯的這個設計? FYI: 我使用代理模式爲我設計
感謝
參數的名稱並不重要。運行時,java沒有辦法告訴您在給定時間要調用哪種方法。爲了過載方法,簽名必須是不同的,所以或者必須有不同數量的參數,或者參數必須是可區分的順序,即String, int
和int, String
。
重載或超載是基於類型的變量,但不能對變量名稱(標識)本身。因此,基本上兩種方法都具有相同的簽名void foo(long ,long ,long)
不,實際上我沒有重載。沒有編譯器錯誤,因爲我用相同的方法簽名覆蓋。我在問是否這是一個糟糕的設計?因爲我有2個具有相同參數的重寫方法,但只有參數的含義是不同的。讚賞您的輸入。謝謝 – vasu1486 2012-03-09 00:44:03
既然你要爲foo()添加一個子類實現,這並不壞。所以,如果你需要一個更具體的實現而不是追求一般的超類實現,那麼你必須重寫它並在上面添加特定的實現。
你是否改變了添加'Derived Class'註釋的問題? – Mahesh 2012-03-09 00:25:51