C#面向对象趣谈
Posted Nemo_XP
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#面向对象趣谈相关的知识,希望对你有一定的参考价值。
某天,作为菜鸟的我坐在一间陌生的小会议室,面试正在进行中。面前的经理大哥很拽的拿着我的简历,不屑的盯着紧张的我。“来,说一下什么是面向对象?”。又是这问题,我都被问过很多次了,也经常查资料,我用中指推了推眼镜,很自信的把前几天从度娘哪里搜到的答案给背了出来:
面向对象是一种思考问题的方式,是相对于面向过程的一种不同的思想。面向过程注重的解决问题的过程,而面向对象则是注重解决问题的结果。
面试大哥盯着我说,“这说的也太官方了,能不能说的通俗点,全面些”。我去,要求还挺高。幸亏我早有准备。我继续答道:
通俗的说,面向过程时,我们做一件事会亲力亲为,按部就班的处理。而面向对象的时候,我们可能就比较懒,去找一个会做这事的人,让这个人去做。
所以面向对象是基于面向过程的,它并没有省去过程,只不过这个过程外包出去了,我们只拿结果即可。
面向过程是具体化的,流程化的,解决一个问题,你需要一步一步的分析,一步一步的实现。
面向对象是模型化的,你只需抽象出一个类,这是一个封闭的盒子,在这里你拥有数据也拥有解决问题的方法。需要什么功能直接使用就可以了,不必去一步一步的实现,至于这个功能是如何实现的,管我们什么事?我们会用就可以了。
举个生活中的例子,我想吃可乐鸡翅了,用面向过程的思想来处理的话,我要做:1.先买到鸡翅、可乐和调料,2.百度:可乐鸡翅怎么做,3.打开电磁炉开始煎、煮、收汁大概20分钟,4.开吃。如果用面向对象的思想来处理,我要做:1.找到一个饭店。2.大声喊:老板我要吃可乐鸡翅。等几分钟老板端出一盘可乐鸡翅到你面前。
用程序伪代码来理解的话,面向过程:
static void Main(string[] args)
{
// 1.买食材
// 2.查做法
// 3.煎..煮..收汁等一系列操作
// 4.做好
}
面向对象
class Program
{
static void Main(string[] args)
{
// 进饭店找到老板
老板 张老板 = new 老板();
// 喊一嗓子,老板我要吃鸡翅
string str老板交付的鸡翅 = 张老板.做鸡翅();
// 吃饱开溜
}
}
class 老板
{
public string 外号 { get; set; } = "啥都会";
public string 做鸡翅()
{
// 做鸡翅的技能, 材料,所用时间等一切相关信息
return "做好的鸡翅";
}
public void 做鸭翅()
{
// 老板除了做鸡翅还会做鸭翅,做鹅翅,做鸵鸟翅...
}
}
区别:
面向过程强调的是功能和行为,完成任务由多个函数构成.
面向对象是讲对象进行封装打包,完成任务由对象构成,强调具备了功能的对象。
优缺点:
面向过程:
优点:性能比面向对象好,因为类调用时需要实例化,开销比较大,比较消耗资源。
缺点:不易维护、不易复用、不易扩展.
优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统 更加灵活、更加易于维护 .
缺点:性能比面向过程差
面向对象的三大特性:
1、封装
隐藏对象的属性和实现细节,仅对外提供公共访问方式,将变化隔离,便于使用,提高复用性和安全性。
2、继承
提高代码复用性;继承是多态的前提。
3、多态
父类或接口定义的引用变量可以指向子类或具体实现类的实例对象。提高了程序的拓展性。
面试大哥:“说的还挺全面,那你最后总结一下面向对象吧,说完你就可以醒来起床上班了”。
公司现在给我这么一个面试的机会,说明我具备开发代码开发项目的能力,实际上就是找我们这个对象来帮公司完成任务,公司不用关心我们怎么完成,这样就可以把精力放到其他更重要的的事上,实际上就是面向对象。面向对象就是将具有一些特定功能的东西封装到一起,完成一件事,只要找相关的对象,调用它所具有完成这件事的方法,但是并没有省去此对象调用方法所做的工作。所以,面向对象是基于面向过程的,其思想可以描述为以前是亲历其为,现在是指导别人去做。
以上是关于C#面向对象趣谈的主要内容,如果未能解决你的问题,请参考以下文章