当前位置:首页 > 技能相关 > C#与C++ > 正文内容

C# 第六篇 面向对象设计(拓展:接口)

admin2年前 (2022-12-05)C#与C++2320 修订时间:2022-12-05 17:04:24

使用interface关键字定义一个Information接口,在该接口中声明Code和Name两个属性,分别表示编号和名称;声明一个方法Showinfo,用来输出信息,代码如下:

interface Information      //定义接口
{
  string Code{get;set;}    //编号属性及实现
  string Nmae{get;set;}    //名称属性及实现
  void Showinfo();         //用来输出信息
}

接口的实现通过类继承来实现,一个类虽然只能继承一个基类,但可以继承任意多个接口。在声明实现接口的类时,需要在继承列表中包含所实现的接口的名称,多个接口之间用逗号(,)分隔。

示例代码:使用接口模拟老师上课的场景

创建一个IPerson接口,定义姓名、年龄两个属性,定义说话、工作两个行为;再创建Student类和Teacher类,两者继承IPerson接口并重写各自的属性和行为;创建两个人peter和mike,让这两个人模拟上课的场景,代码如下:

    interface IPerson                        //定义IPerson接口
    {
      string Name { get; set; }              //姓名属性
      int Age { get; set; }                  //年龄属性
      void Speek();                          //说话行为
      void Work();                           //工作行为
     }
    class Student: IPerson
    {
        public string Name { get; set; }     //实现姓名属性
        private int age;                     //定义age字段,用来表示年龄
        public int Age                       // 实现年龄属性
        {
            get
            {
                return age;
            }
            set
            {
                if (age > 0 && age < 120)      //控制输入范围
                {
                    age = value;
                }
            }
        }
        public void Speek()                   //实现Speek方法
        {
            Console.WriteLine(Name + ":老师好");
        }
        public void Work()                   //实现Work方法
        {
            Console.WriteLine(Name + "同学开始记笔记");
        }
    }
    class Teacher : IPerson
    {
        public string Name { get; set; }     //实现姓名属性
        private int age;                     //定义age字段,用来表示年龄
        public int Age                       // 实现年龄属性
        {
            get
            {
                return age;
            }
            set
            {
                if (age > 0 && age < 120)      //控制输入范围
                {
                    age = value;
                }
            }
        }
        public void Speek()                   //实现Speek方法
        {
            Console.WriteLine(Name + ":同学们好");
        }
        public void Work()                   //实现Work方法
        {
            Console.WriteLine(Name + "老师开始上课");
        }
    }
    class Program
    {
      static void Main(string[] args)
      {
            //使用派生类对象创建接口数组
            IPerson[] person = new IPerson[] { new Student(), new Teacher() };

            person[0].Name = "peter";
            person[0].Age = 20;
            person[1].Name = "mike";
            person[1].Age = 40;
            person[0].Speek();
            person[1].Speek();
            Console.WriteLine();
            person[1].Work();
            person[0].Work();
            Console.ReadLine();
      }
     }

第3行代码和第4行代码定义接口中的属性,这里并不会自动实现属性,只是提供了 get访问器和set访问器,因此在派生类中可以使用自动实现属性的方式实现这两个属性。

在C#中实现接口成员(显式接口成员实现除外)时,必须添加public修饰符,不能省略或添加其他修饰符。

在上面的示例中只继承了一个接口,接口还可以多重继承,在使用多重继承时,要继承的接口之间用逗号(,)分隔。例如,下面代码继承3个接口。

interface ITest1
{}
interface ITest2
{}
interface ITest3
{}
class Test:ITest1,ITest2,ITest3
{
   //接口实现
}


 您阅读本篇文章共花了: 

免责声明
本站内容均为博客主本人日常使用记录的存档,如侵犯你的权益请联系:lifei@zaiheze.com 546262132@qq.com 沟通删除事宜。本站仅带访问端口形式使用,已杜绝搜索引擎爬取。

扫描二维码推送至手机访问。

版权声明:本文由LIFEI - blog发布,如需转载请注明出处。

本文链接:http://www.lifeiai.com/?id=253

分享给朋友:

相关文章

Web API的创建3年前 (2022-11-07)
C# 第一篇 踏上征程 3年前 (2022-11-14)
C# 第七篇 窗口与控件2年前 (2022-12-05)

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。