C#中接口的实现与继承

本文介绍了C#中如何通过接口实现多重继承,包括创建接口、定义属性和方法,以及在控制台应用程序中使用和实现这些接口的步骤,展示了接口在避免类的多重继承带来的复杂性中的应用。
摘要由CSDN通过智能技术生成

前言

程序中多重继承非常常见,但是C#中的类不支持多重继承,为了避免多重继承给程序带来的复杂性问题,一般使用接口实现多重继承。


一、 接口的实现与继承

(1)创建一个接口项,定义编号ID和姓名Name两个属性和一个自定义方法Showinfo,如下所示:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 接口使用
{
    internal interface Interface1   //定义接口
    {
        string ID { get; set;}      //编号(可读可写)
        string Name { get; set; }   //姓名(可读可写)
        void Showinfo();            //定义方法,显示定义的编号和姓名
    }
}

(2)创建一个控制台应用程序,Program类继承接口Interface1,实现接口中的所有属性和方法。在Main()函数中实例化Program类的一个对象,并使用该对象实例化Interface1接口,最后通过实例化的接口对象访问派生类中的属性和方法。代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;

namespace 接口使用
{
    internal class Program:Interface1 //继承接口
    {
        string id = "";
        string name = "";
        public string ID  //编号
        { 
            get { return id; }
            set { id = value; }
        }
        public string Name //姓名
        { 
            get { return name; }
            set { name = value; }
        }
        public void Showinfo() //显示编号和姓名
        {
            Console.WriteLine(ID + "\t" + Name);
        }
        static void Main(string[] args)
        {
            Console.WriteLine("编号\t 姓名");
            Program program = new Program(); //实例化Program类对象
            Interface1 Interface2 = program; //使用派生类对象实例化接口Interface1
            Interface2.ID = "001";           //为派生类中的ID赋值
            Interface2.Name = " 李明";       //为派生类中的Name赋值
            Interface2.Showinfo();           //调用派生类中的方法显示定义的属性值
            
            Interface1 Interface3 = program; //使用派生类对象实例化接口Interface1,也可不重新实例化接口,使用Interface2   
            Interface3.ID = "002";
            Interface3.Name = " 张三";
            Interface3.Showinfo();
            
            Console.Read();
        }
    }
}

(3)运行结果如下所示
在这里插入图片描述

二、接口的多重继承和实现

(1)创建一个程序台应用程序,声明三个接口:Interface1,Interface2,Interface3,接口Interface2和Interface3继承自Interface1,接口Interface1定义了姓名和性别两个属性,接口Interface2和Interface3定义了两中方法。如下所示。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 接口多重继承
{
    internal interface Interface1
    {
        string Name { get; set; }
        string Sex { get; set; }
    }
    interface Interface2: Interface1
    {
        void Teach();    
    }
    interface Interface3: Interface1
    {
        void Study();
    }
}

(2)利用Program继承了这三个接口,并分别实现三个接口中的属性和方法。如下所示。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 接口多重继承
{
    internal class Program:Interface1,Interface2,Interface3
    {
        string name = "";
        string sex = "";
        public string Name
        {
            get { return name; }
            set { name = value; }
        }
        public string Sex
        {
            get { return sex; }
            set { sex = value; }
        }
        public void Teach()
        {
            Console.WriteLine(Name + "  " + Sex + "    " + "教师");
        }
        public void Study()
        {  
            Console.WriteLine(Name + "  " + Sex + "    " + "学生");
        }
        static void Main(string[] args)
        {
            Console.WriteLine("姓名" + " " + "性别" + " " + "教师/学生");
            Program program = new Program();
            Interface2 interface2 = program;
            interface2.Name = "张三";
            interface2.Sex = "男";
            interface2.Teach();
            Interface3 interface3 = program;
            interface3.Name = "李四";
            interface3.Sex = "男";
            interface3.Study();
            Console.Read();
        }
    }
}

(3)运行结果如下:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值