C#面试,类、抽象类和接口之间的区别,如何理解它们?

这是一篇纯文字的文章,可能需要静心阅读。

 

这让我想起了年轻时候,我已不再少年。那时候我游走于各家公司去面试,倒是遇到了几个问此问题的面试官。

多年过去后,有感而发,现在回头看,提这个问题,对经验不丰富的我,那时候只能靠背,知其然不知所以然,而且回答的估计也不到什么点上。

不知道各位同学是否也有这样的经历?!

这个问题对于经验不丰富的同学,真是很有难度的。除了背之外,自身的理解很浅显。

 

回到话题本身,类、抽象类和接口之间的区别,如何理解它们?

1.抽象层次

接口是顶级抽象,抽象类是次级抽象,类是对世界的理解和具体实现。

2.关系继承

类,仅允许继承另一个类,该类可以是具体类,也可以是抽象类,但类,可以实现多个接口。

抽象类,在关系继承上,与具体类是一样的。

3.实现层次

类,是对世界的理解并使用具体逻辑进行实现。

抽象类,定义了世界的基本框架和结构要求,抽象类提供了所有子类的模板。

接口,是对世界的极致单一抽象。它是最小最细的抽象。

4.思想原则

三者在实际编码中,应严格遵循面向对象原则,即单一、开闭、替换、依赖倒转、接口隔离。通过这个思想原则,可以指导我们创建对于业务世界的编码理解。

5.区别

接口是顶级抽象,接口的抽象,是极为考验程序员水平能力的。接口抽象不单是针对业务抽象,还针对行为、设计、框架等多方面的思考,可以说你有多高的项目全局观,就可以设计出多抽象的接口。

抽象类是具体实现类的模板抽象,即使是单一业务的抽象类,因为考虑到实际实现的因素,可能都会有提供一些子类所需要的父类共性方法或属性信息。

类,则是负责具体实现。

6.对外开放

在开放api方面,对于调用者来说,他并不需要知道你的api具体实现细节,仅需要知道有什么方法,实现什么功能,怎么使用即可。

请您记住:“所有类,都是某种意义的具体实现”,所以,我们应该尽可能隐藏类和抽象类,开放接口。

 

以上限于我经验的理解,您可以描述得更多。

总而言之,这个问题,面试官拿去问经验还不够丰富,比如3年以下的,多少还是有些不合时宜的。因为这些程序员更多的是实现功能,而不会考虑设计,不会考虑抽象层面的问题。对于他们来说,能实现功能就不错了。

 

当您有了对抽象的理解后,您的阶梯将迈进另一个世界:C#变成了你的实现世界的工具。

 

祝您用餐愉快。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值