各位好 如果有一小段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%轉換過去?
謝謝