1、本文以C#语法为例说明,打开visual studio,创建任意一个项目类型都行。本文以创建一个控制台应用程序为例,当项目创建好之后,再创建一个接口类,叫做IAnimal,与一个抽象类Person
2、接口只是一组方法的集合,并不能包含任何实现,所以,接口是不能包含字段的。抽象类在没有抽象方法的情况下,跟普通方法差别不大,其他类内部能有的东西,抽象类也都可以有。所以,抽象类是可以包含字段定义的
3、接口中的方法只能有方法体,不能有具体的实现代码。抽象类中的方法,如果不加abstract就可以有方法体的实现代码,一旦加上abstract这个关键字的方法,就是抽象方法,这样的方法,不能有方法体
4、在C#中,一个类可以同时实现多个接口。但是,一个类只能同时实现一个父类,实现抽象的父类也只能是一个,这就是C#中的单继承原则
5、接口并不严格要求里面的方法有相同的共性与联系,比如,在IAnimal方法中,可以加入物品相关的方法。但是,抽象类通常是对一种实物的抽象,所以,原则上不会将不相关的方法加入进来,因为,抽象类中定义的方法,子类能够自动获得并使用
6、接口中的方法是不能带访问修饰符的,即使是public也不能有,默认就是公开的。抽象类中的方法,可以带任何访问修饰符,比如public、private、protected等
7、子类实现接口的时候,必须将接口中的所有方法都实现,无一例外。但是,在抽象类中的方法,如果不是使用abstract修饰的抽象方法,就可以不实现,子类自动获得这个方法的使用权限