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