面向对象的三大特性自我解读
面向对象的三大特性
全是自我总结,没有一点参考,有错概率很大,如果有错,请立马提出
封装
简单讲,封装就是把一个常用的工具做出来,用来反复使用
我们最早接触到的System.out.println()就是一个很好的封装
向println()方法中添加参数,不用关注内部的运行,就可以在控制台中进行数据的打印
使用封装的例子中贴近生活的很好比喻就是
遥控器:
不用关注内部芯片的实现,
只需要按不同的按键(传递不同的参数),就可以得到想要的效果
我们封装要做的就是做出这些工具
自我感觉能被称作好的封装的条件:
1.能实现效果(遥控器不是坏的)
2.能不修改源码的情况下,满足不同的参数(不用拆开遥控器修改芯片就可以满足不同按键)
3.对应参数实现对应的效果(按每一个按钮都实现响应的效果)
继承
有的老师会解释成,父亲继承给孩子的能力(方法)和钱财(属性)
但是我会把他理解为:
类是类别、种类
父类就是一个种类的大的总称
子类,就是属于父类的下一分类
所有继承就是因为子类是父类的下一分类,所以必然属于父类,必然拥有父类的所有东西,必然继承父类
例如:
定义Person(人)是父类
此时,世界上有很多很多的人聚在一起形成一个种类,这个种类叫Person
人需要文化的传承,则定义了一个Teacher(老师)种类
此时,世界上有一部分人成为了老师,此时Teacher(老师)当然还是Person(人),所以继承了人所有的习性
多态
此时,世界上有一部分人成为了老师,此时Teacher(老师)当然还是Person(人),所以继承了人所有的习性,并重写了work()方法,改变了生活方式,work()工作从生存变成了教书育人
人需要安稳的住房,则定义了一个worker( 工人)种类
此时,世界上有一部分人成为了工人,重写了work()方法,改变了生活方式,work()工作从生存变成了建筑房屋
现在,我们需要一个老师
有两个办法:
-
从老师Teacher种类里实例化(new)一个老师Teacher teacher
Teacher teacher = new Teacher();
-
从老师Teacher种类里实例化(new)一个人,跟着老师这个种类重写了,改变了生活方式
Person person = teacher
简写成
Person person = new Teacher();
第一种会更加方便
但此时,我们需要一个老师和一个工人
也两个办法:
-
从老师Teacher种类里实例化(new)一个老师Teacher teacher
Teacher teacher = new Teacher();
从工人worker种类里实例化(new)一个工人Worker worker
Worker worker = new Worker();
Teacher teacher = new Teacher(); Worker worker = new Worker();
此时需要两个人
-
从老师Teacher种类里实例化(new)一个Person人
因为人是Teacher和Worker的总合(父类)
所以人既可以成为Teacher也可以成为Worker
所以在需要工人时,跟着工人这个种类重写了,改变了生活方式
Person person = new Teacher(); person = new Worker();
此时只需要一个人