面向对象的三个基本特征算是基础之中的基础,这三种特征在实际编写代码过程中也是时常用到。
基本概念,老生常谈了,三种特征为:
1.封装(指隐藏对象的属性和实现细节,仅对外提供公共访问方式)
2.继承(继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的属性和方法,或子类从父类继承方法,使得子类具有父类相同的行为)
3.多态(不同类的对象对同一消息做出响应。同一消息可以根据发送对象的不同而采用多种不同的行为方式)

接下来是理解这三个词的意思,以人类为例,首先假设人类确实是由女娲的模板造出来的。
那么,女娲希望通过她的方法造出来的人类能做些什么,有哪些特点,这些都要在模板中定义好。比如说,女娲要让所有的人都必须吃饭,都必须喝水,所有人的寿命有一个范围值,这样一一定义好每个方法和属性,并且不能直接改变这些属性,但是给你特定的访问权限。这样说太抽象,你可以理解为,就算人类医术再发达,可以把一个人的寿命从原来的七八十岁强行延长到150岁甚至更高,但永远会有一个临界值,这个临界值就可以看成是女娲封装好的年龄属性,女娲说:是有年龄这个概念,但是你不能想怎么改怎么改,不论你怎么去修改年龄,都要经过我的处理,这就是封装。如果不封装,那么人类就会长生不老。

所以你可以理解封装就是不希望别人直接修改自己定义的东西,而是希望别人在定义时可以通过自己的校验或者是其他操作。否则每个人都可以随心所欲的修改造物主的模板。

继承就比较好理解了。首先每个人跟每个人都是一样的,每个人跟每个人又都是不一样的。一样在于都有相同的生命结构,都有耳朵,鼻子,嘴巴,胳膊,腿。不一样在于每个人的长相,性格,价值观等等方面。那么我要是想构造不一样的人,难道就需要很多人类的模板吗?答案是否定的,很容易想到,人类这个模板不可能把每个人的不同点都照顾到,这个模板只定义了最基础的生命结构,如果想要有各种各样的人,那么可以使用继承。
也就是说,每个人都继承了人类这个模板,因此他们都会有相同的生理结构,而多样化就是多态的内容了,稍后再提。所以说继承就是字面意思,孩子可以继承自父母,他有父母的基因,但是其他东西又异于父母。这就是继承。

继承

所以你可以理解为继承就是为了不用多造模板而产生的概念。你有这个东西,我也想要这个东西但是还得有我的特色,我继承一下你就可以了,可以很显著的减少代码量。

多态其实就是多样性的体现,这里还分为两种情况,一种是重载,一种是重写。
这两个里面,重写与继承有关,也就是父母生了孩子,那么这个孩子应该有哪些自己的特色,这些特色需要进行重写。比如说,父母两个人全是右撇子,到了孩子这,重写一下这个运动方式,把孩子改成左撇子,这就是重写。
那么什么是重载,重载是在一个对象内的,不依靠继承。比如说,当你问孩子的名字的时候,就要问:你的名字是啥啊,如果孩子有小名,有大名,有英文名,有外星名,怎么去通过这一句话获得不同的回答,这就是重载所要解决的事情。所以,重载可以让你调用一个相同的方法,去实现不同的操作。比如两个人都问你昨晚睡好没,一个是你喜欢的人,一个是你讨厌的人,那么这时候你应该会有两种不同的回答。这就是重载。

所以你可以理解为多态就是为了维持人类多样性的一种概念,具体表现就是重写和重载两种方式。