28.抽象类和接口的区别

28.面向对象关联知识点-抽象类和接口的区别


28.1 知识点

知识回顾

抽象类和抽象方法

// abstract 修饰的类和方法
// 抽象类不能实例化
// 抽象方法只能在抽象类中声明,是个纯虚方法,必须在子类中实现

public abstract class AbstractClass
{
    public abstract void AbstractMethod();
}

接口

// interface 自定义类型
// 是行为的抽象
// 不包含成员变量
// 仅包含方法、属性、索引器、事件,成员都不能实现,建议不写访问修饰符,默认 public 写 protected 的话要显示实现接口

public interface MyInterface
{
    void InterfaceMethod();
}

抽象类和接口的相同点

  • 都可以被继承
  • 都不能直接实例化
  • 都可以包含方法声明
  • 子类必须实现未实现的方法
  • 都遵循里氏替换原则

抽象类和接口的区别

  • 抽象类中可以有构造函数;接口中不能
  • 抽象类只能被单一继承;接口可以被继承多个
  • 抽象类中可以有成员变量;接口中不能
  • 抽象类中可以声明成员方法、虚方法、抽象方法、静态方法;接口中只能声明没有实现的抽象方法
  • 抽象类的方法可以使用访问修饰符;接口中建议不写,默认 public

如何选择抽象类和接口

  • 表示对象的用抽象类,表示行为拓展的用接口。
  • 不同对象拥有的共同行为,我们往往可以使用接口来实现。
  • 举例:动物是一类对象,我们自然会选择抽象类;而飞翔是一个行为,我们自然会选择接口。

28.2 知识点代码

using System;

namespace Lesson26_面向对象相关_抽象类和接口的区别
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("抽象类和接口的区别");

            #region 知识回顾
            //抽象类和抽象方法
            //abstract修饰的类和方法
            //抽象类 不能实例化
            //抽象方法只能在抽象类中申明 是个纯虚方法 必须在子类中实现

            //接口
            //interface 自定义类型
            //是行为的抽象
            //不包含成员变量
            //仅包含方法、属性、索引器、事件,成员都不能实现,建议不写访问修饰符,默认public 写protected的话要显示实现接口
            #endregion

            #region 知识点一 抽象类和接口的相同点
            //1.都可以被继承
            //2.都不能直接实例化
            //3.都可以包含方法申明
            //4.子类必须实现未实现的方法
            //5.都遵循里氏替换原则
            #endregion

            #region 知识点二 抽象类和接口的区别
            //1.抽象类中可以有构造函数;接口中不能
            //2.抽象类只能被单一继承;接口可以被继承多个
            //3.抽象类中可以有成员变量;接口中不能
            //4.抽象类中可以申明成员方法,虚方法,抽象方法,静态方法;接口中只能申明没有实现的抽象方法
            //5.抽象类方法可以使用访问修饰符;接口中建议不写,默认public
            #endregion

            #region 知识点三 如何选择抽象类和接口
            //表示对象的用抽象类,表示行为拓展的用接口
            //不同对象拥有的共同行为,我们往往可以使用接口来实现
            //举个例子:动物是一类对象,我们自然会选择抽象类;而飞翔是一个行为,我们自然会选择接口。
            #endregion
        }
    }
}


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com

×

喜欢就点赞,疼爱就打赏