什么是面向对象?
将现实的事物抽象出来,把现实生活中的事物以及关系,抽象成类,通过继承,实现,组合的方式把万事万物都给容纳了。
而对象就是具体的某个物体,每个具体的东西都是对象,比如:“我和一个女孩去吃饭。”你可能会想是哪个女孩子?所以女孩可以抽象成一个类,因为女孩是一个泛指,并不是具体的一个物体,而小红是指一个具体的女孩子,所以小红就是一个对象,她有女孩子的所有属性,称为她继承女孩子这个类。
当解决一个问题的时候,面向对象会把具体的事物抽象成对象的概念,就是说这个问题里面有哪些对象,然后给对象赋一些属性和方法,方法就是类把所有功能隐藏对象的属性和实现细节,仅对外提供公共访问方式,这也叫做封装。每一个方法表示一个功能,然后让每个对象去执行自己的方法,问题得到解决。
什么是面向对象思维?
万事万物皆对象把现实世界中的每一个物体都看作一个对象,每个对象都有固有的属性和方法,比如把人看作一个对象,属性有:眼睛鼻子啥的,而方法有:吃穿住行等。
面向对象是模型化的,你只需抽象出一个类,这是一个封闭的盒子,在这里你拥有数据也拥有解决问题的方法。需要什么功能直接使用就可以了,不必去一步一步的实现,至于这个功能是如何实现的,不知道,我们会用就可以了。比如:
“我想吃鱼”,我不用知道鱼是怎么做的,我只要去饭店吃就行了。怎么做的?怎么买的?不需要知道,视为放在“饭店”里,这就是封装。然后我又想吃龙虾了,同理我也不需要知道,我只要去饭店吃就行了。而饭店把怎么做鱼怎么做龙虾,同样的要洗要切要去买抽象成一个类,每次都是同样的方法洗切买,再根据具体买什么再决定怎么做。而龙虾,鱼就成了具体的对象。
在程序开发中,“饭店”就是需要我们封装的方法,“食材”就是我们所说的类,“龙虾,鱼”就是具体的对象。当我们想从吃龙虾变成吃鱼的时候我们只需要更改一下对象就行。同样,我们写程序把对象的共有属性提取出来定义一个类,而继承这个类不需要我们重复的写一样的代码,当我们想更改对象时,不需要更改底层代码,使得代码简洁明了。