MySQL, Oracle, Linux, 软件架构及大数据技术知识分享平台

网站首页 > 精选文章 / 正文

编程:Interface与 Abstract Class有什么区别?

2024-12-25 12:02 huorong 精选文章 5 ℃ 0 评论

结论:

1、接口是一个契约,是一个共识,它不关心继承者是什么,它只在乎继承者是否实现了它所声明的一切

2、抽象类希望在多个相关对象之间实现相同的行为,它希望继承者来自同一族群,告知继承者你们应该像我声明的那样一致行动

使用场景:

考虑使用接口,如果:

1、希望不相关的类实现你的接口.

2、希望指定特定的行为,但不关心由谁实现它的行为

3、想要利用多重继承的优势

考虑使用抽象类如果:

1、希望在几个密切相关的类之间共享代码

2、希望扩展抽象类的类具有许多公共的方法或字段,或者需要公共以外的访问修饰符

概念:

接口定义了契约。实现该契约的任何类或结构都必须提供接口中定义的成员的实现。

关键字 abstract 使你能够创建不完整的类和类成员,这些类和类成员必须在派生类中实现。

栗子:

    /// <summary>
    /// 定义接口
    /// </summary>
    interface IInterface
    {
        void ContractMethod();
    }

    /// <summary>
    /// 继承自抽象类与接口
    /// 继承BaseClass似乎在说:我ImplementationClass与BaseClass是一种类
    /// 继承IInterface似乎在说:我遵循了IInterface声明的协议
    /// </summary>
    public class ImplementationClass : BaseClass,IInterface
    {
        /// <summary>
        /// 实现接口
        /// </summary>
        public void ContractMethod()
        {
            throw new NotImplementedException();
        }

        /// <summary>
        /// 实现抽象类
        /// </summary>
        public override void MustImplementMethod()
        {
            throw new NotImplementedException();
        }
    }

Tags:abstract class

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言