C# 接口和继承
Posted wwwbdabc
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# 接口和继承相关的知识,希望对你有一定的参考价值。
接口是方法的抽象,如果不同的类有同样的方法,那么就应该考虑使用接口。
例1:
using System;
/** 假设我们公司有两种程序员:VB程序员指的是用VB写程序的程序员,用VBpro这个类表示;C程序员指的是用C写程序的程序员,用Cpro这个类来表示。每个类都有一个WriteCode()方法。 现在公司来了一个项目,要求派某个程序员写一个程序。 */ namespace ConsoleApplication2 //VB程序员 class VBpro public void WriteCode() Console.WriteLine("我用vb写代码"); //C程序员 class Cpro public void WriteCode() Console.WriteLine("我用c写代码"); //编写项目类 class Pro public void WriteProgram(VBpro program) program.WriteCode(); public void WriteProgram(Cpro program) program.WriteCode(); //测试 class Program static void Main(string[] args) Pro p = new Pro(); VBpro p1 = new VBpro(); p.WriteProgram(p1); Cpro p2 = new Cpro(); p.WriteProgram(p2); Console.ReadKey(); /** 但是如果这时公司又来了一个C#程序员,我们怎么改这段程序,使它能够实现用C#写程序的功能呢?我们需要增加一个新类C#程序员类,同时在此项目类中要再次 重载WritePrograme(C#pro programer)方法。这下麻烦多了。如果还有C++程序员,JAVA程序员呢。但是如果改用接口,就完全不一样了 */ namespace ConsoleApplication2 //申明一个程序员接口 public interface IProgramer void WriteCode(); //vb程序员 class VBpro : IProgramer public void WriteCode() Console.WriteLine("我用vb写代码"); //c程序员 class Cpro : IProgramer public void WriteCode() Console.WriteLine("我用c写代码"); //编写项目类 class Pro public void WriteProgram(IProgramer iprogramer) iprogramer.WriteCode(); //测试 class Program static void Main(string[] args) Pro p = new Pro(); VBpro p1 = new VBpro(); p.WriteProgram(p1); Cpro p2 = new Cpro(); p.WriteProgram(p2); Console.ReadKey();
运行结果:
例子2:
using System; namespace ConsoleApplication1 public interface Ichoose void on(); void off(); public class TV : Ichoose private string name = "test1"; public void on() Console.WriteLine("0电视打开了", this.name); public void off() Console.WriteLine("0电视关闭了", this.name); public class Ice : Ichoose private string name = "test2"; public void on() Console.WriteLine("0冰箱打开了", this.name); public void off() Console.WriteLine("0冰箱关闭了", this.name); class Program static void Main(string[] args) TV tvString = new TV(); tvString.on(); tvString.off(); Ice iceString = new Ice(); iceString.on(); iceString.off(); Console.ReadKey();
运行结果:
接口的继承
C#中接口可以多继承,接口之间可以相互继承和多继承。一个类可以同时继承一个类和多个接口,但是接口不能继承类。
using System; /** 假如你是一名在职学生,你就具有双重身份。一个身份是学生,必须完成学习任务,一个身份是职员,必须完成工作任务。进一步说,你是计算机类学生,除了学习基础课程, 还必须学习C#程序设计。现在建立一个模型,应该如何建立? 1.我们首先来定义一个学生接口,规定学生必须学习,再建立一个职员接口,规定职员必须完成工作任务。 2.计算机专业的学生,除了完成一般学习任务,还是学习C#。可以再定义一个接口,继承学生接口,规定自己的学习任务。 */ namespace ConsoleApplication3 //定义学生接口 public interface IStudent void study_base(); //定义职员接口 public interface IEmployee void work(); //定义计算机类学生接口 public interface IIStudent : IStudent void study_computer(); public class Infostudent : IEmployee, IIStudent //实现学生接口 public void study_base() Console.WriteLine("数学、语文和英语必须学好"); //实现职员接口 public void work() Console.WriteLine("工作必须完成"); //实现计算机类学生接口 public void study_computer() Console.WriteLine("计算机类的学生除学好基础课外,还要学C#"); //测试 class Program static void Main(string[] args) Infostudent infostudent = new Infostudent(); infostudent.study_base(); infostudent.work(); infostudent.study_computer(); Console.ReadKey();
运行结果:
总结:接口之间继承表示方法和类继承是相同的,继承的规则也是相同的,即子接口获得父接口的内容,如果有多个接口,接口之间用","隔开。
以上是关于C# 接口和继承的主要内容,如果未能解决你的问题,请参考以下文章