接口(interface)——目的:多态

本文深入探讨了接口的概念,解释了其在实现多态、增强程序可扩展性和解决类多继承问题中的作用。同时,文章详细阐述了如何通过接口实现多态,以及在不同类中实现相同接口的技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、什么是接口(接口就是能干什么):

接口就是一种规范、协议,约定好遵守某种规范就可以写通用的代码。

定义了一种具有各种功能的方法。(只是一种能力,没有具体的实现,像抽象方法一样,“光说不做”)

 

2、接口存在的意义:多态

多态的意义:程序可扩展性。程序可扩展性:让程序变得更加灵活,节省成本,提高效率。

 

接口解决了类的多继承问题

接口解决了类继承以后体积庞大的问题

接口之间可以实现多继承

例子:

    //接口不能实例化,接口中不能有任何实现
    //接口就是让子类来实现的
    public interface IFlyable
    {
        //接口里面只能包含方法、时间、属性、索引器
        //接口中的所有成员都不能有显示的访问修饰符
        //默认为 public
        void Say();   //方法
        void M1(string msg); //方法

        //接口中这样写属性表示未实现的属性,方法中这样写表示自动属性
        string Name  //属性
        {
            get;
            set;
        }
        string this[int index]//索引器
        {
            get;
            set;
        }
    }

 

接口中的成员,子类必须实现

1、 接口可以多实现,一个类只能继承一个父类,但是可以实现多个接口

2、 接口解决了不同类型之间的多态问题,比如鱼和船不是同一类型,但是都能在睡了“游泳”,只是方式不一样,要对“游泳”实现多态,就只能考虑接口。

 

 

3、显示实现接口

方法重名后的解决办法

显示实现接口后只能通过接口来调用。不能通过类对象本身来调用(显示实现接口,查看IL是private的,防止通过类来调用)

实现接口中的方法时用:接口名.方法名() ,并且没有访问修饰符private

显示实现接口后只能通过接口变量来调用,业务显示实现接口默认为private

 

例子:

namespace 显示实现接口
{
    class Program
    {
        static void Main(string[] args)
        {
            Men men = new Men();
            men.fly();  //正常实现接口的fly方法,显示实现的调用不到,因为是 private
            IFly2 f = new Men();
            f.fly();
            Console.ReadKey();
        }
    }
    public interface IFly1
    {
        void fly();
    }
    public interface IFly2
    {
        void fly();
    }
    public class Men : IFly1,IFly2
    {
        public void fly()
        {
            Console.WriteLine("实现IFly1中的fly方法。。。");
        }

        //显示实现接口没有访问修饰符,默认是私有的
        //显示实现接口时,在方法名前加了“接口名” 形如:接口名.方法名()
        void IFly2.fly()
        {
            Console.WriteLine("实现IFly2中的fly方法。。。。");
        }
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值