我对面向过程与面向对象的理解。。有错误请大佬指出
面向过程
举例子:我没钱了,需要到银行取,从家到银行需要做几路公交车,需要在哪个公交站牌换程,到了银行需要找到前台小姐姐说取多少钱。。。。。
javaScript代码举例子:
问题:在一个dom树中 需要向body中添加动态的div标签,需要对div标签内容进行添加。之后发现不满意再重新修改
- 首先想到的就是创建div标签
var div = document.createElement('div')
- 之后开始对div的内容开始添加
div.innerHTML = '我是过程中的第二步'
- 开始将动态的div标签添加到body标签中
document.body.append(div)
- 对内容不满意,需要修改,就要从找到
div.innerHTML
将内容修改。如果项目中的业务多的时候,都需要修改的时候,你要需要一个一个的找一个一个的修改。是不是很麻烦??? 这就是面向过程编程的缺点:难以维护、也难以复用
面向对象
举例子:我没钱了,首先需要想到的是去银行取钱或者找朋友借钱。去银行取钱或者找朋友借钱的中间过程就不需要考虑了。。。这就是面向对象思想
java代码举例子:
在拿到一个业务后,不要急着完成这个业务,而是先根据这个业务抽象出来 业务中的实体类,然后让这些实体类来完成这些业务的动作。所以优点是:可复用性。
面向对象的三大特征
-
面向对象-封装:
- 封装让细节隐藏,让人更好地关注应用
- 封装可以实现该公开的公开,该隐藏的隐藏
- 通过访问修饰符实现 public、private、protected、(friendly)默认
- public:公开,都可以访问
- private:私有,只可在类内访问,外部不可访问
- protected:受保护的,可被子类和同一个包里的其他类访问
- 默认friendly:同一个包里的其它类可以访问
- 概念:原则是属性和方法能私有的尽量私有
-
面向对象-继承:
- java.lang 包中的类是默认import到类中的
- Object类 java.lang.Object
- 所有类的超类(superclass)
- 如果一个类没有显示使用extends继承某个类,则自动继承自Object类
- super
- super:代表父类
- 调用父类方法:super(方法)
- super()总是引用直接父类的构造方法(不写也会自动添加)
- 继承注意事项
- 在子类中不能直接访问父类中的私有成员
- 子类和父类之间应该有"IS-A"关系
- 不要滥用继承,只有在分类学上有意义时,才应该使用继承类
- 子类具有扩展父类的责任
- 继承的目的就是为了代码复用
-
面型对象-多态
-
多种形态,就是类中的方法,根据调用者的不同,能产生不同的行为
-
方法重载(条件)
- 参数的个数不同
- 参数的类型不同
- 不同类型参数的顺序不同
- 但是返回值的不同不能造成方法重载
-
方法重写
- 是在子类重新书写父类中的方法的一种现象
- 在子类中可以通过super,显示的调用父类中这个方法的实现
-