namespace Lesson26_面向对象相关_抽象类 { internal class Program { static void Main(string[] args) { #region 知识回归 //抽象类和抽象方法 //abstract修饰的类和方法 //抽象类不能实例化 //抽方法只能在抽象方法种声明 //接口 //interface 自定义类型 //是行为的抽象 //不包含成员变量 //仅保护你方法、属性、索引器、时间,成员都不能被实例化,建议不屑访问修饰符,默认public #endregion #region 知识点一 相同点 //1.都可以被继承 //2.都不能直接实例化 //3.都可以包含方法声明 //4.子类必须实现未实现的方法 //5.都遵循里氏替换原则 #endregion #region 知识点二 区别 //1.抽象类可以有构造函数,接口不能 //2.抽象类只能被单一继承,接口可以被继承多个 //3.抽象类种可以有成员变量,接口不能 //4.抽象类种可以声明成员方法,虚方法,抽象方法,接口只能声明成员方法 //5.抽象类方法可以使用访问修饰符,接口中建议不屑,默认public #endregion #region 如何选择抽象类和接口 //表示对象的用抽象类,表示行为拓展的用接口 //不同对象拥有的共同行为,往往可以使用接口来实现 //举个例子: //动物是一类对象,我们自然会选择抽象类;二飞翔是一个行为,我们自然会选择接口 #endregion } } }