我有多个类,但它们都有一个具有相同类型和名称的变量。然后,我有一个方法,它获取我之前提到的变量的值,无论输入类型是什么,都以相同的方式处理它。
下面是例子:
class A{ int i; }
class B{ int i; }
class C{ int i; }
Run Code Online (Sandbox Code Playgroud)
这就是我目前编写处理每个类中 int i 值的方法的方式
int foo(A input) { return input.i*2; }
int foo(B input) { return input.i*2; }
int foo(C input) { return input.i*2; }
Run Code Online (Sandbox Code Playgroud)
只为不同的输入类型写了很多,那么如何在不重写方法内容的情况下进行方法重载?
我正在寻找的图像:
int foo(A input),foo(B input),foo(C input) { return input.i*2; }
Run Code Online (Sandbox Code Playgroud)
最简单和最惯用的方法是定义interface这样的:
public interface IHaveNumber //or whatever you want to call it
{
int i { get; set; } // I would propose a better name for this...
}
public int Foo(IHaveNumber input)
{
//whatever ...
}
public class A : IHaveNumber
{
public int i { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
另一种可能性是具有(例如)B和C派生自A并定义Foo为采用基类:
public class A { public int i { get; set; } }
public class B : A { }
public class C : A { }
public int Foo(A input){ ... }
Run Code Online (Sandbox Code Playgroud)
一般来说,我认为查看有关polymorphism和的文档会有所帮助inheritance。
| 归档时间: |
|
| 查看次数: |
256 次 |
| 最近记录: |