您的位置:首页 > 其它

基本类型--接口(一、您了解接口继承吗?)

2008-05-22 17:46 253 查看
14.1类和接口继承



14.2定义接口



14.3接口的继承




public static class Program






{




static void Main(String[] args)

{


//-------------------------


Console.WriteLine("---第一个例子---");


BaseClass b = new BaseClass();


b.fun1();


b.fun2();


((Itest)b).fun1();


((Itest)b).fun2();


//--------------------------


Console.WriteLine("---第二个例子---");


SonOne s1 = new SonOne();


s1.fun1();


s1.fun2();


((Itest)s1).fun1();


((Itest)s1).fun2();


//----------------------------


Console.WriteLine("---第三个例子---");


b = new SonOne();


b.fun1();


b.fun2();


((Itest)b).fun1();


((Itest)b).fun2();


//----------------------------


Console.WriteLine("---第四个例子---");


SonTwo s2 = new SonTwo();


s2.fun1();


s2.fun2();


((Itest)s2).fun1();


((Itest)s2).fun2();


//----------------------------


Console.WriteLine("---第五个例子---");


b = new SonTwo();


b.fun1();


b.fun2();


((Itest)b).fun1();


((Itest)b).fun2();


//----------------------------


Console.ReadLine();


}


}




public interface Itest

{


void fun1();


void fun2();


}


//1.BaseClass必须实现Itest中的所有方法 fun1,fun2


//2.应将接口方法标记为virtual,如果不显示标记,编译器会把它标记为virtual和sealed。这样派生类就无法重写接口方法了。


// 派生类可以重新继承同一个接口,并提供自己的实现。




internal class BaseClass : Itest

{


//fun1将被标记为sealed,不能被重写




public void fun1()

{


Console.WriteLine("BaseClass.fun1");


}


public virtual void fun2()






{


Console.WriteLine("BaseClass.fun2");


}


}




internal class SonOne : BaseClass

{


//派生类无法重写基类方法fun1




new public void fun1()

{


Console.WriteLine("SonOne.fun1");


}


//派生类可以重写基类方法fun2


public override void fun2()






{


Console.WriteLine("SonOne.fun2");


}


}


internal class SonTwo : BaseClass, Itest






{


//派生类无法重写基类方法fun1,new表示重新实现Itest的fun1


new public void fun1()






{


Console.WriteLine("SonOne.fun1");


}


//派生类可以重写基类方法fun2


public override void fun2()






{


Console.WriteLine("SonOne.fun2");


}


}

结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: