A类 有方法 A1 \ A2 \ A3,实例化a,即:A a = new A();
B类 有方法 B1 \ B2, 实例化b,即:B b = new B();
我可不可以定义一个类, C类 有方法 A1 \ A2 \ A3 \ B1 \ B2
调用 a\b 的时候, C c = a; 用c.A1去代替a.A1 或者 C c = b, 用 c.B1 去代替b.B1好像继承可以做到,继承如果 A、B有相同的方法 X呢,是算哪一个类的为准呢?
B类 有方法 B1 \ B2, 实例化b,即:B b = new B();
我可不可以定义一个类, C类 有方法 A1 \ A2 \ A3 \ B1 \ B2
调用 a\b 的时候, C c = a; 用c.A1去代替a.A1 或者 C c = b, 用 c.B1 去代替b.B1好像继承可以做到,继承如果 A、B有相同的方法 X呢,是算哪一个类的为准呢?
解决方案 »
- Dev的Gridview第三方控件问题
- c#获取天气,编译通过了,怎么无法返回!求帮忙
- 添加委托实例时,程序死掉了
- 水晶报表(我现在要做一个水晶报表,是线图的。)
- 写的个N的阶乘的算法
- UDP套接字编程如何穿过路由器或者防火墙
- 如何使用Dictionary?
- 文件路径问题
- 知道Button的Name,请问如何实例化为Button控件?
- 请教:如何能生成一个8位的流水号(不使用数据库的标识类型的字段)
- 如何用SOAP写一个客户端,取代Web版的即时消息平台Web客户端
- 上过Codeproject网站的人看下!为什么我在下载Codeproject原码的时候总是下载到aspx页面?而不是一个zip文件郁闷啊!
B类 有方法 B1 \ B2, 实例化b,即:B b = new B();
我可不可以定义一个类, C类 有方法 A1 \ A2 \ A3 \ B1 \ B2
调用 a\b 的时候, C c = a; 用c.A1去代替a.A1 或者 C c = b, 用 c.B1 去代替b.B1 首先,继承类 C 可以有上面这种写法吗?
继承类C可以这么写,会隐藏基类的方法
C c; c.A1,就是调用C类的A1
若要调继承的A的A1 则转为A ((A)c).A1
楼主直接去调试就会明白的
即:在C类中生成一个A对象和一个B对象,将对相关的方法调用转发至相应对象。class C
{
private a;
private b;
public C()
{
a=new A();
b=new B();
}
public void A1()
{
a.A1();
}
...
}
其他类似。
因为,C#不支持多重继承,C#可以支持继承多接口。
class C{
A a;B b;//如果要用A,和B的方法那封装它们不就可以了?
}
//如果要继承的话那你可先写C
public class C{
public virtual void A1{}
public virtual void A2{}
public virtual void B1{}
}
//然后写A,和B为其子类
public class A:C{}
public class B:C{}
//应用的时候就可以象你所说的那样调用了
class App{
static void Main(){
C c1=new A();
C c2=new B();
c1.A1();c2.B1();
}
}
能达到楼主的目的
Abstract Class X { abstract fun1, abstract fun2, abstract property1, abstract property2}
Class A : X { override fun1, override fun2, override property1, override property2}
Class B : X { override fun1, override fun2, override property1, override property2}调用的时候:
X x = new A(); { x.fun1(); void fun {…… = x.property1; ……}}
X x = new B(); { x.fun1(); void fun {…… = x.property1; ……}}
或者
{ void fun1 (X x){……};
void fun2 {X a = new A(); fun1(a); ……};
void fun3 {X b = new B(); fun1(b); ……};
}这样的话,我把要调用A、B 的地方,都传一个 (X x) 参数进去,而不用传(A x)、(B x)这样可以把调用A、B两份代码合成调用(X x)一份代码,大家认为可以吗?