看板 java 關於我們 聯絡資訊
各位好 如果有一小段java程式 如下 class A{} class B extends A{} class C extends B{} class P{ int m(B x) {return 1;} } class Q extends P{ int m(A x) {return 2;} } class R extends Q{ int m(C x) {return 3;} } class S extends R{ int m(B x) {return 4;} int m(C x) {return 5;} } R s = new S(); System.out.println(s.m(new B())); // 4 我把它轉換成C# 如下 public class A { } public class B : A { } public class C : B { } public class P { public virtual int m(B x) { return 1; } } public class Q : P { public virtual int m(A x) { return 2; } } public class R : Q{ public virtual int m(C x) { return 3; } } public class S : R{ public override int m(B x) { return 4; } public override int m(C x) { return 5; } } R s = new S(); Response.Write(s.m(new B()) ); // 2 很明顯輸出不一樣 java輸出是4 C#輸出是2 想請問是我語法轉換上錯誤? 還是有些語法並不能100%轉換過去? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.239.189.237 ※ 文章網址: https://www.ptt.cc/bbs/java/M.1439219107.A.51C.html
longlongint: s.m的型態是? 08/11 16:22
kisha024: 你是說s.m() return的type嗎? 是int 08/11 16:30
longlongint: 我問的是 signature 08/19 02:45