method-overriding

    -2熱度

    1回答

    根據我的理解,如果調用方法被重寫,那麼方法是根據運行時的對象來決定的。 例如。 class A { void fun1() { System.out.println("fun1 of clss A"); } } class B extends A { void fun1() { System.out.println("

    -1熱度

    3回答

    我覺得輸出是直的2 child 2,但它原來是child 1 2 ??? 由於家長指向孩子,應該使用孩子的變量和方法,但是在孩子的字符串後面打印1。爲什麼字符串在s.i之前打印?以及爲什麼它指的是我父母的副本? 這裏是我的示例代碼: public class Abc { int i=1; public int getStr() { system.out.p

    3熱度

    3回答

    爲什麼Java不支持靜態方法的動態多態? 如果答案是「靜態方法不應該在實例上調用,因此方法調用不需要在運行時解析」,那麼進一步的問題是「爲什麼Java允許我調用實例上的靜態方法?」。爲什麼它不會阻止用戶直接通過給一些編譯時錯誤來調用實例上的方法? 其他問題如果Java支持靜態方法的Runtime Polymorphism,會出現什麼問題?

    0熱度

    2回答

    我有一個接口I1,它定義了一個方法M1。其他兩個類C1和C2正在實施I1和over-raides M1。 在另一個類C3我參考M1。現在如何理解M1是指C1_M1還是C2_M1? P.S我可以在調試代碼時找到它。但是我正在尋找一些快捷方式而不執行它。

    0熱度

    2回答

    我正在用c#xaml開發一個Windows Phone應用程序。 我正在使用MVVM體系結構。 我有兩個View Model類 BaseViewModel:ViewModelBaseX { public override void OnNavigatedTo(NavigationMode mode, Uri uri, IDictionary<string, string> queryS

    3熱度

    8回答

    最近有人問我這個問題:「爲什麼要一個重載的方法?」 我說,如果我有10種方法的一類,我想使用它的全部功能,除了一個方法,那麼我將覆蓋方法有我自己的功能。 然後面試官在那種情況下回答說,爲什麼我們不能寫一個不同名稱的新方法,而是使用該方法。 是的,這也是對的。現在我很困惑。重寫一種方法的真正目的是什麼? 任何人都可以告訴我嗎?謝謝大家。

    0熱度

    1回答

    case class A(a:Int, b:Int) { def f(){println(a)} } val o1 = A(3,3) val o2 = new A(o1.a,o1.b) {override def f(){println(b)}} //too long when there are a lot of parameters 這裏我必須將o1參數傳遞給o2,但在現

    1熱度

    2回答

    我讀過子類方法不能有超類方法的父例外。在異常層次結構中,ArithmeticException是從RuntimeException派生的嗎?所以下面的代碼應該給編譯錯誤。但它沒有給予...任何人都可以告訴我爲什麼? class Cafe { void f() throws ArithmeticException{ throw new ArithmeticException(

    3熱度

    1回答

    我瞭解到,如果具有相同簽名的方法,我可以重寫該方法。 但是,派生類中的重寫方法的返回類型可以是超類方法返回類型的子類型。如果上面提供的聲明是正確的,任何人都可以告訴我這段代碼有什麼問題嗎? class Base{ public int getValue(){ return 222; } //1 } class Sub extends Base{ public byte g

    0熱度

    1回答

    我有一個實例,我正在使用別人的庫,導入爲一個DLL。我只想更改該類中的兩個私有函數。我真的很喜歡在DLL外部執行此操作,所以當其他人釋放一個新的DLL時,我可以快速更新我的DLL,而不必更改源代碼並構建自己的DLL。 是否有可能做到這一點?我可以以某種方式在DLL外部重寫C​​#DLL中的一些私有函數嗎?