有A,B,C三个类的实例变量a,b,c现在有一段代码code(),那么如何让多个类实例变量共用一段执行代码?注:code()方法的声明可以变.现在我想到的是方法重载,只是方法内代码都是一样的.public void code(A theA) //调用: code(a)
public void code(B theB) //调用: code(b)
public void code(C theC) //调用: code(C)所以存在代码冗余的问题,不是最好.还有没有更好一些的方法?
public void code(B theB) //调用: code(b)
public void code(C theC) //调用: code(C)所以存在代码冗余的问题,不是最好.还有没有更好一些的方法?
传入去A,B,C中
class A
{
}
class B
{
}
class C
{
}一个范型类
class Class1<T>
{
public static void Funny(T t)
{
Console.WriteLine(typeof(T).ToString());
}
}主程序
public class MyClass
{
public static void Main()
{
A a = new A();
B b = new B();
C c = new C();
Class1<A>.Funny(a);
Class1<B>.Funny(b);
Class1<C>.Funny(c);
}
}范型还没正式用过,书本上看到的。我觉得这里应用范型应该比较合适。
class BaseCls
{
public void code()
{
}
}
三个类:
class A:BaseCls
{
}
class B:BaseCls
{
}
class C:BaseCls
{
}
如果用不到,就直接把代码code()写在一个公共函数类(如:CommonFunc)里~随用随调
如果都用到的话,可以 qpl007(蓝色闪电)
让A、B、C 继承一个基类,在基类中实现方法,子类A、B、C直接调用就行。
也就无法声明引用类型了.打个不雅观的比方,人要上厕所,有男和女的之分,所以上
则所的过程要知道是男是女,才能确定使用哪间厕所.如果如楼上几个以继承方法的,则是男类、女类(派生类)继承于人类(基类),
则调用方法为code(人类 人类变量),现在又有问题了,基类到派生类不是隐式
自动转换的,那么又该如何强制转换呢(不知道是男类还是女类)?所以我才想出了重载的方式,尽管code()方法代码都是一样的,但可以根据引用
对象的不同来执行。如下:
A,B,C三个类的实例变量a,b,c
public void code(A theA) //调用: code(a)
public void code(B theB) //调用: code(b)
public void code(C theC) //调用: code(C)To namhyuk(namhyuk) : 用范型可能是一个办法!不知道还有没有其它办法?
够土么?
这个应该个个都知道怎么去做的了。
{
// 判断是男是女
....
// 执行共同处理的代码
....
}
可以放在共通函数类中,也可以做成基类
是code()方法来引用类的实例对象,而不是类对象来执行code()方法代码。to lovebingye(降龙):
隐式转为object后,A(或B或C)类的派生方法将不可用。
{
type t = obj.getType();
switch (t.toString())
{
case "A":
A xxx = (A) obj;
break;
case "B":
B xxx = (B) obj;
....
}
xxx.play();
}
xxx实例变量有效区只在switch的case子句中,是局部变量,
xxx.play()无效。我也想过这个办法,呵呵,如果xxx有效区能超出switch就好了。