什么是面向对象?是要面向我写代码吗?
此时,我突然感受到了一股莫名的杀气。
什么是面向对象?
别给我拽英文。给我详细说说,说不明白今天就没完。
我现在就想听你给我讲,咱们直接点外卖吧,别自己动手做饭了。
在面向过程的吃饭中,我们想要填饱肚子,需要自己亲自下厨把这顿饭做出来,那么,我们就需要先想好吃什么、然后去买菜、洗菜、洗米、蒸饭、炒菜等等一系列的事情。
pubic void 做饭{
制定菜单;
买菜;
洗菜;
洗米;
蒸饭;
炒菜;
}
那还用说,麻烦呗。
我不想吃米饭,我想吃馒头。
中午吃剩下的菜家里面还有,直接热一热就可以吃了。
以上这些突发事件,在编程中就叫做需求变更或者新的需求,这种事情发生是必然会发生的。
对于程序员来说,就需要通读代码,找出可以复用的方法,然后重新调用,不能复用的就重新写一个。时间久了,方法就会越来越多,系统维护越来越复杂。
所以,通过面向对象的方式“做饭”,就像上面的代码一样。
额、你说的也对,也不对。在这个场景中,确实可以把外卖软件当做是「对象」。其实,在面向对象编程中,抛弃了函数,想要实现一个功能不再是通过函数的叠加调用实现的了。而是通过对象。
比如我要描述一个人,「数据」就是他的年龄、性别、身高体重,「能力」就是他能做什么工作,承担什么样的责任。
什么是封装?
封装的结果就是可以有一个类,通过这个类我们可以获得一个对象。然后我们就可以通过给这个对象下命令,让他执行自己的「能力」。
封装只是面向对象的第一步,目的是把现实世界的东西抽象成对象。面向对象真正有威力的地方是「继承」和「多态」。
我们使用外卖软件点餐,当我们第二次去某一家店时,外卖软件会提示你上一次你在这家点了什么,你可以点击<再来一单>把上次的菜品直接加到购物车中,这就是「继承」。而在购物车中的物品你可以直接付款下单,也可以把增删和修改菜品。这就是「多态」。
在面向对象编程中,当两个类具有相同的特征(属性)和行为(方法)时,可以将相同的部分抽取出来放到一个类中作为父类,其它两个类「继承」这个父类。继承后子类自动拥有了父类的部分属性和方法。
被继承的类称为“基类”、“父类”或“超类”。
上面的例子中,狗类是父类,牧羊犬类是子类。牧羊犬类通过继承获得狗类的吠的能力,同时增加了自己独有的放羊的能力。
同一操作,作用于不同的对象,可以产生不同的结果,这就是「多态」。通常说的多态都是指运行期的多态,也叫动态绑定。
有类继承或接口实现、子类重写父类的方法、父类引用指向子类的对象。比如:
犬科动物{
吠;
}
狗 继承 犬科动物{
吠{旺旺旺}
}
狼 继承 犬科动物{
吠{嗷嗷嗷}
}
有人说,你自己定义的对象,定义的时候不就知道到底是什么类的对象了么,这个其实并不决定的,很多时候我们可能不知道,原因是,对象可能并不是我们自己创建出来的。
嗯,对了,外卖点好了么?
(全文完)
漫话编程
让编程变得有乐趣
编辑:椒盐猫巨烦
↓ 点击标题即可查看 ↓
2. 12个革命性的公式
4. 一幅图读懂量子力学(大神的战争)
6. 为什么你吃的食物跟广告上的永远不一样?
8. 出生在显赫世家是怎样的体验?
10. 这些东西,看过的人都转疯了!
