抽象类和接口

抽象类:

<!--[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]-->继承类必须覆盖抽象类的抽象方法overridevirtualnew则报错

 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]-->抽象类用于关系紧密的类,接口用于定义动作。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值