C#中抽象类和接口的概念

来源:百度知道 编辑:UC知道 时间:2024/05/25 12:40:05
假如我有两个类a1 a2继承了抽象类a和接口b,抽象类a中有两个方法,method1,method2,接口B中有method3,现在我需要做个函数,把任意的a1 a2对象传过去,然后调用抽象类中method1`mehtod2还有接口中method3的方法,这个函数该怎么写,是用抽象类型还是接口做参数类型?给我个答案,然后详细说明下原因,我不太理解...
汗,你没解决我的问题.现在问题是有两个这样的类,而在不确定是哪个类的情况下,我要把这个类当参数传过来,还要在函数里调用这三个方法..

我觉得用抽象类或者接口都没问题,函数内部做一下强制转换应该就行。
比如用抽象类
fun(a parameter)
{
parameter.method1();
parameter.method2();
b parameter2 = parameter as b;
if (b != null)
b.method3();
}
只要传进的参数实现了b接口,as转换就不会失败的,不会返回null。

用实现了这3个方法的那个类做参数类型
原因嘛!!!
抽象类中没有方法3,想调用方法3肯定不会通过
接口中没有方法1和2,调用方法1或2肯定也不行

//抽象类a
public abstract class a
{
public void method1()
{
}
public void method2()
{
}
}

//接口b
public interface b
{
void method3();
}

//类a1
public class a1 : a, b
{
public void method3()
{
}
}

//类a2
public class a2 : a, b
{
public void method3()
{
}
}

public class Class1
{
// 调用测试
public void test()
{
a1 o1 = new a1();
a2 o2 = new a2();

fun(o1);
fun(o2);
}

// 要实现的函数
public void f