今天我们来讲讲面向对象的三大特性
封装
每个对象都包含它能进行操作所需要的所有信息,就叫封装,顾名思义对象不必依赖其他对象来完成自己的操作。
三大特性,那特性当然有其独特的地方,那封装的特性是什么呢?
第一,良好的封装能减少耦合性
第二,类内部的实现可以自由地修改
第三,类具有清晰的对外接口
就比如我们的房子是一个类的实例,室内的装饰与摆设都在室内,如果没有墙的阻挡,那么你的一举一动就会被别人一览无余,所以封装就相当于四面墙。不过没有一间房没有门窗,那么你也不会看到外面的风景,没有阳光你也不会看到屋内精美的装饰,所以封装也会有“门窗”,封装的门窗就是暴露在外的属性和方法,专门供其他对象调用。
继承
首先说说继承的特点:
第一,子类拥有父类非private的属性和功能;
第二,子类具有自己的属性和功能;
第三,子类还可以以自己的方式实现父类的功能。
总结起来就是说对象的继承代表了一种‘is-a’的关系,如果两个对象A和B,可以描述为‘B是A’,则表明B可以继承A。
是不是有点云里雾里,我们再来举个例子,‘猫是哺乳动物’,就说明猫和哺乳动物存在继承和被继承的关系,但是不能说‘哺乳动物是猫’,因为猫除了拥有哺乳动物的特征外,还拥有自己的独特性(爬树,抓老鼠)。
多态
多态表示不同的对象可以执行相同的动作,但要通过他们自己的实现代码来执行。
多态的特点:
第一,子类以父类的身份出现;
第二,子类在工作时以自己的方式来实现;
第三,子类以父类身份出现时,子类特有的属性和方法不可以使用。
就比如说儿子代替父亲上台表演,化妆后就是以父亲身份出现了,儿子模仿得再好那也是模仿,儿子只能用自己理解的表现方式去模仿父亲的作品。虽然儿子经过多年学习,可能已经有自己的绝活,但代替父亲表演是不能表现出来的,不然就不是父亲了。所以子类的属性和方法是不可以在多态出现。
总结起来就是说对象的