关于接口与抽象类

小结:

1. 接口

只有方法名,没有方法体,由继承自它的类提供所有方法的实现,C#中规定类只能单继承,但可以通过接口来实现多继承,即一个类可以继承多个不同的接口

2. 定义一个接口

a. 不能定义构造函数

b. 不能定义实例成员

c. 不能定义静态成员

3. 调用接口方法

如:public sealed class String : IComparable, ICloneable, IConvertible, IComparable<string>, IEnumerable<char>, IEnumerable, IEquatable<string>

String继承了多个接口,拿ICloneable为例, 代码如下:

String ss = "chine";
ICloneable cloneable = ss;

----cloneable变量只能访问ICloneable中定义的方法以及ICloneable从继承链上端继承下来的方法【Object中的方法】,cloneable变量不能访问String类型中的任何方法

4. 值类型与接口

像引用类型一样,值类型也可以实现0个或多个接口,然而,当转换值类型为接口类型时会发生装箱操作,会产生性能损耗。

5. 显式接口实现(EIMI: explicit interface method implementation)

复制代码
    public interface ITouch
    {
        void Too();
    }
    public class Dosome : ITouch
    {
        public void Too()
        {
            Console.WriteLine("public Too");
        }
        void ITouch.Too()//显式接口实现,前面不能加任何访问修饰符(如:public,private等)
        {
            Console.WriteLine("ITouch Too");
        }
    }

----调用:
            Dosome dosmoe = new Dosome();
            dosmoe.Too();//输出:public Too

            ITouch itouch = dosmoe;
            itouch.Too();//输出:ITouch Too

----显式接口实现只能通过该接口类型变量才能访问,该接口的实现类的实例变量不能访问它
----应尽量少使用EIMI
复制代码

 6. 接口与抽象类的异同

 a. 相同点

     都不能直接实例化,都是通过继承类来实现其抽象方法。

 b. 不同点

     接口支持多继承;抽象类不支持多继承

     接口只包含方法、属性、索引器、事件的签名,但不能定义字段和包含实现的方法;抽象类可以定义字段、属性、包含有实现的方法

7. 什么时候用接口,什么时候用抽象类【规则与场合】

    a. 抽象类应主要用于关系密切的对象,而接口适合为不相关的类提供通用功能。

    b. 接口着重于CAN-DO关系类型,而抽象类则偏重于IS-A式的关系。

    c. 如果预计会出现版本问题,可以创建"抽象类"。例如,创建了狗(Dog)、鸡(Chicken)和鸭(Duck),那么应该考虑抽象出动物(Animal)来应对以后可能出现其他种类动物的事情。而向接口中添加新成员则会强制要求修改所有派生类,并重新编译,所以版本式的问题最好以抽象类来实现。

    d. 从抽象类派生的非抽象类必须包括继承的所有抽象方法和抽象访问器的实现。

    e. 对抽象类不能使用new关键字,也不能被密封,原因是抽象类不能被实例化,只能通过继承类来实现【若密封的话,就不能创建子类了】。

    f. 在抽象方法声明中不能使用 static 或 virtual 修饰符。

    g. 如果要设计小而简练的功能块,则使用接口。如果要设计大的功能单元,则使用抽象类。

Python网络爬虫与推荐算法新闻推荐平台:网络爬虫:通过Python实现新浪新闻的爬取,可爬取新闻页面上的标题、文本、图片、视频链接(保留排版) 推荐算法:权重衰减+标签推荐+区域推荐+热点推荐.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值