面向对象编程强调抽象、封装、继承、多态
抽象:我们在定义一个抽象类的时候,实际上就是把一类事物共有的属性和行为提取出来,形成一个物理模型(模版),这种研究问题的方法称为抽象。你可以这样来想,抽象就是一个类的最基础的东西,比方说人,他的抽象类可能就是都从母体出来,有皮肤。但具体到你是黑人,白人,还得黑人类,白人类来说明 。
封装:就是将类的属性包装起来,不让外界轻易的知道他的内部实现。只提供给你对外的接口让你来调用。好处可以增强模块的独立性。如设置属性或方法的访问权限(private、protected、public、默认)。
继承:就是从父类把它的有用的东西拿过来自己用,不用在自己去实现了,像母亲会把双眼皮传给女儿,不用她自己去割了 。
多态:一个对象变量可以指向多种实际类型的现象。一个人,在不同场合下,有不同的身份,不同的状态。比如在家里,你是父母的孩子;在学校,你就是学生;在公司,你就是老板的职员。再比如在接口总定义一个run()方法,是什么在跑,汽车还是马?通过不同类的实现来表示相似的逻辑。
顺便说一下重载和重写(覆盖)的区别:
重载:相同的方法名,不同的实现机制(通过传入不同个数或类型的参数)。当程序运行过程中自己去判断到底该调用谁。比方说打人,那么多人,当你打起群架来,该打谁就打谁,事前你也不知道。
重写:从父类继承而来的方法不能满足需要的情况下,可以将此方法的逻辑在子类中重新实现。我们最常用的就是重写toString()方法了。
所谓的面向对象就是将我们的程序模块化,对象化,把具体事物的特性属性和通过这些属性来实现一些动作的具体方法放到一个类里面,这就是封装.封装是我们所说的面向对象编程的特征之一.除此之外还有继承和多态.继承有点类似与我们生物学上的遗传,就是子类的一些特征是来源于父类的,儿子遗传了父亲或母亲的一些属性,或者相貌,又或者是运动天赋.有点种瓜得瓜种豆得豆的意思.面向对象里的继承也就是父类的相关的属性,可以被子类重复使用,子类不必在自己的类里面重新定义一回,父类里有点我们只要拿过来用就可以了.而对于自己类里面需要用到的新的属性和方法,子类可以自己来扩展.当然,会出现一些特殊情况,就是我们在有一些方法在父类已经定义好了,但是子类我们自己用的时候,发现,其实,我们的虽然都是分析数据的,但是天气数据的分析方法跟经济数据的分析方法是不一样的,所以这个时候我们就不能直接调用父类的这个分析数据的方法了.这个时候我们需要用到面向对象的另一个特性,多态.对就是多态,我们要在子类里面把父类里面定义分析数据的方法在子类里面重新实现一遍.多态包含了重载和重写.重写很简单就是把子类从父亲类里继承下来的方法重新写一遍,这样,父类里面相同的方法就被覆盖了,当然啦,你还是可以通过super.AnalyData方法来调用父类的分析数据方法.而重载就是类里面相同方法名,不同形参的情况,可以是形参类型不同或者形参个数不同没或者形参顺序不同,但是不恩给你使返回值类型不同.
版权声明:本文为博主原创文章,未经博主允许不得转载。