抽象类:
<!--[if !supportLists]-->1. <!--[endif]-->是一种特殊的类,除了不能被实例化外,具有类得其他特性.
<!--[if !supportLists]-->2. <!--[endif]-->抽象类的方法可以不声明为abstract,此时可以实现方法提;如果声明为abstract,则不可以实现方法体,只能声明,如:public abstract int Remove(int i,int j) 此时类必须声明为抽象
<!--[if !supportLists]-->3. <!--[endif]-->一个类继承抽象类,则抽象类的访问性要>=继承类的访问性
abstract class abstractClass
{
public abstractClass()
{
Console.WriteLine("I amabstrat class"); //抽象函数声明
}
public abstract int Remove(int i,int j);
public int Add(int i, int j)
{
int k = i + j;
return k;
}
}
public class s : abstractClass
{
public s()
{
Console.WriteLine("I ams,from abstractclass");
}
}
这样的编译会报错
<!--[if !supportLists]-->1. <!--[endif]-->构造函数会执行,先执行抽象类,再执行继承类。
<!--[if !supportLists]-->2. <!--[endif]-->继承类必须覆盖抽象类的抽象方法。 用override,用virtual或new则报错
public override int Remove(int i, int j)
{
returni - j;
}
<!--[if !supportLists]-->3. <!--[endif]-->只能单一继承抽象类。
接口
<!--[if !supportLists]-->1. <!--[endif]-->不能被实例化。
<!--[if !supportLists]-->2. <!--[endif]-->成员只能系方法,属性,所引起和事件,且只能声明。
<!--[if !supportLists]-->3. <!--[endif]-->成员默认是public
<!--[if !supportLists]-->4. <!--[endif]-->派生类必须全部实现接口的全部成员
<!--[if !supportLists]-->5. <!--[endif]-->派生类的成员必须系public,但可以用virtual或者abstract(如果派生类为抽象类)修饰。
<!--[if !supportLists]-->6. <!--[endif]-->派生类可以继承多个接口.
<!--[if !supportLists]-->7. <!--[endif]-->派生类可以有其他成员,如字段。
抽象类和接口的相同点
<!--[if !supportLists]-->1. <!--[endif]-->不能被实例化
<!--[if !supportLists]-->2. <!--[endif]-->可以被继承
<!--[if !supportLists]-->3. <!--[endif]-->可以包含方法的声明,抽象类可以有方法的实现体,接口只能声明。
<!--[if !supportLists]-->4. <!--[endif]-->派生类必须实现没实现的方法。抽象类实现抽象的方法,接口须全部实现
抽象类和接口的区别
<!--[if !supportLists]-->1. <!--[endif]-->成员不同:抽象类可以有构造函数,私有字段等,接口则只可以有属性,方法,索引器,和事件。
<!--[if !supportLists]-->2. <!--[endif]-->抽象类可以可以实现成员,只要不被声明为abstract;接口的成员只能声明
<!--[if !supportLists]-->3. <!--[endif]-->抽象类的派生类实现的是抽象的成员,接口的派生类实现全部成员
<!--[if !supportLists]-->4. <!--[endif]-->继承不同:派生类只能单一继承抽象类或者类,但可以多重继承接口。
<!--[if !supportLists]-->5. <!--[endif]-->如果抽象类继承接口,则可以把接口的方法映射到抽象类的抽象方法,而抽象类的子类必须全部实现接口的方法。
<!--[if !supportLists]-->6. <!--[endif]-->抽象类用于关系紧密的类,接口用于定义动作。