一般情况下,类继承接口,要实现接口中的所有成员。 若需要只实现部分成员,可以用抽象类过渡的方式。
见下面例子。

1 namespace 接口的部分实现_抽象类_ 2 { 3 4 //目标:声明一个接口,里面有三个方法,用一个派生类只实现其中的2个方法 5 interface Iperson 6 { 7 void speak(); //说话 8 void eat(); //吃饭 9 void work(); //工作 10 11 } 12 //使用一个抽象类继承接口Iperson,把其中2个方法变为 非抽象方法。 13 public abstract class man:Iperson 14 { 15 public void speak() //抽象类中的非抽象方法,可以给子类继承 16 { Console.WriteLine ("每个人都需要睡觉"); } 17 public void eat() { } 18 public abstract void work(); // 抽象方法,可以在子类中重写。给子类自己定义不一样主体。 19 20 public void sleep() { Console.WriteLine ( "不管大人小孩子都需要睡觉" ); } //抽象类中额外加的方法,睡觉。 21 22 } 23 24 /*-----用抽象类派生 ,重写其中的某一个方法,实现对接口部分方法的实现-----*/ 25 public class boy : man //由抽象类派生boy 26 { 27 public override void work() //重写方法 28 { 29 Console.WriteLine ( "小孩子不需要工作" ); 30 31 // 里面的其他非抽象方法直接继承,不用重写,可以实例化之后调用。 32 } 33 } 34 35 class Program 36 { 37 static void Main( string [ ] args ) 38 { 39 //用派生类boy实例化 40 boy XiaoMing = new boy(); 41 XiaoMing.speak (); //调用抽象类man,里面的《非抽象方法》 42 XiaoMing.work (); //调用派生类boy,里面的 《重写方法》 43 XiaoMing.sleep (); //调用抽象类man里,新加的方法。 44 45 Console.Read (); 46 47 //这样,在接口Iperson中,有三个方法。而在间接实现了Iperson的派生类(boy类)中,只实现了它的两个方法。 48 } //完成了对接口成员的部分实现 49 } //注意事项: 在使用 抽象类 过渡时,在抽象类中 一定要实现继承接口中的所有方法。可以是具体方法,也可以是抽象方法。 50 }