c#中已经有了interface为什么还要搞一个抽象类?

在c#中,抽象类,接口的主要作用是,对代码进行抽象化,让别人在使用我们的代码的时候不需要关心具体的实现,而只需要关心这个函数实现了什么功能就够了。当然如果仅仅是为了实现这个功能,用函数封装就够了,根本没必要用到抽象类和interface。
那为什么还要用到抽象类和函数封装咧?这里面就涉及到一个面向对象编程的另一个特性多态 ,什么叫多态咧,举个非常经典例子,动物,有天上飞的,水里游的,地上走的。但是,动物有那么多我们为每一种动物都建一个类的话,肯定会涉及到很多重复的代码,这时候我们就在想有没有办法减少这些重复代码的编写咧?
比如:动物如何行动这个方法,肯定是每个动物都有的。这时候接口就出现了,它把行动这个方法拿出来,单独做成一个接口类,每个继承这个接口的类都需要实现这个接口中的方法。这样不同动物的行动都是调用的同样名称的方法。
但是,接口中是无法写具体的方法实现的,所有的实现都必须在子类中去实现。动物的年龄,姓名这些基本都是一样,如果我要写一个方法来获取的话,使用接口的话每个子类我都要写一遍,这样代码就会有大量的重复。而如果使用抽象类的话,我们只需要把这些方法的实现放在抽象类中就好了,抽象类就是父类和接口的结合。它使用关键字abstract来实现,被abstract修饰的方法必须在子类中实现。还有一种简单的方法,就是给需要在子类重写的方法,使用virtual关键字,这样就可以在子类中重写了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值