Abstract Class和Interface的区别
首先Abstract Class是抽象类,而Interface是接口,一个类可以继承多个接口,但是继承一个抽象类。下面我们用表格的形式统计一下两者的不同:
Abstract Class | Interface | |
实例化 | 不能实例化 | 不能实例化 |
类继承 | 一个类只能继承一个抽象类 | 一个类可以继承多个接口 |
数据成员 | 可以有自己的成员 | 必须是public static final类型,是静态的,不能修改 |
方法 |
可以有非抽象方法和抽象方法,对于抽象方法,子类中必须将其实现。 可以包含静态方法 |
所有的方法都是抽象的,子类不能对其进行重新定义,且必须实现。 不能包含静态方法 |
变量 | 可以私有,其值可以在子类中被重新定义和赋值 | 不可私有,且必须给定初始值,子类中不能将其重新定义和赋值 |
构造方法 | 可以有构造方法 | 不能有构造方法 |
实现 | 需要继承 | 需要实现 |
对象可以被foreach遍历的前提是:需要实现 IEnumerable 接口或声明 GetEnumerator 方法的类型