面向对象的三大特性自我解读

面向对象的三大特性

全是自我总结,没有一点参考,有错概率很大,如果有错,请立马提出

封装

简单讲,封装就是把一个常用的工具做出来,用来反复使用

我们最早接触到的System.out.println()就是一个很好的封装

向println()方法中添加参数,不用关注内部的运行,就可以在控制台中进行数据的打印

使用封装的例子中贴近生活的很好比喻就是

遥控器:

​ 不用关注内部芯片的实现,

​ 只需要按不同的按键(传递不同的参数),就可以得到想要的效果


我们封装要做的就是做出这些工具


自我感觉能被称作好的封装的条件:

​ 1.能实现效果(遥控器不是坏的)

​ 2.能不修改源码的情况下,满足不同的参数(不用拆开遥控器修改芯片就可以满足不同按键)

​ 3.对应参数实现对应的效果(按每一个按钮都实现响应的效果)


继承

有的老师会解释成,父亲继承给孩子的能力(方法)和钱财(属性)

但是我会把他理解为:

类是类别、种类

父类就是一个种类的大的总称

子类,就是属于父类的下一分类

所有继承就是因为子类是父类的下一分类,所以必然属于父类,必然拥有父类的所有东西,必然继承父类

例如:

定义Person(人)是父类

此时,世界上有很多很多的人聚在一起形成一个种类,这个种类叫Person

人需要文化的传承,则定义了一个Teacher(老师)种类

此时,世界上有一部分人成为了老师,此时Teacher(老师)当然还是Person(人),所以继承了人所有的习性


多态

此时,世界上有一部分人成为了老师,此时Teacher(老师)当然还是Person(人),所以继承了人所有的习性,并重写了work()方法,改变了生活方式,work()工作从生存变成了教书育人

人需要安稳的住房,则定义了一个worker( 工人)种类

此时,世界上有一部分人成为了工人,重写了work()方法,改变了生活方式,work()工作从生存变成了建筑房屋


现在,我们需要一个老师

有两个办法:

  1. 从老师Teacher种类里实例化(new)一个老师Teacher teacher

    Teacher teacher = new Teacher();
    
  2. 从老师Teacher种类里实例化(new)一个人,跟着老师这个种类重写了,改变了生活方式

    Person person = teacher


    简写成

    Person person = new Teacher();
    

第一种会更加方便


但此时,我们需要一个老师和一个工人

也两个办法:

  1. 从老师Teacher种类里实例化(new)一个老师Teacher teacher

    Teacher teacher = new Teacher();

    从工人worker种类里实例化(new)一个工人Worker worker

    Worker worker = new Worker();

    Teacher teacher = new Teacher();
    Worker worker = new Worker();
    

    此时需要两个人

  2. 从老师Teacher种类里实例化(new)一个Person人

    因为人是Teacher和Worker的总合(父类)

    所以人既可以成为Teacher也可以成为Worker

    所以在需要工人时,跟着工人这个种类重写了,改变了生活方式

    Person person = new Teacher();
    person = new Worker();
    

    此时只需要一个人

posted @ 2022-01-23 22:23  CoderCatIce  阅读(44)  评论(0编辑  收藏  举报