开头先说
既然谈到面向对象,就必须要说面向过程。
- 面向过程注重的是问题的具体执行步骤
- 面向对象注重的是有哪些参与者,各个参与者负责的事情
细问解释
面向对象的三大特征:封装、继承、多态
- 封装:外界必须通过该对象允许的方式来访问该对象。这样的好处:外部调用不需要关心内部实现细节。
# 反射可以直接访问被private修饰的属性和方法,算不算破坏java封装的特性?
答:不算,封装更多是一种标识,标明了提供给外界使用的方法。如果不按这样用当然可以,只不过使用的时候更加复杂
-
继承:子类只需要继承父类,就可以获得父类的属性和方法,当然只有公有和受保护类型。这样的好处:(1)从父类角度来看,将相同代码都提取到了父类中,实现代码复用(2)从子类角度来看,方便了子类的扩展,子类只需要改变或者扩展自己个性化的特点即可,一些共性的属性直接使用父类的就行
-
多态:用一个父类类型接收子类的实例,外部对同一个方法的调用,会根据子类实例的不同而变化。这样的好处:(1)可替代性:设计模式有一个很重要的原则就是依赖倒转原则,代码应该依赖于抽象而不是具体实现。比如我写了一个接口,定义了增删改查,然后用MySQL实现了该接口,后期如果要使用Oracle数据库,如果我遵从了多态的规则,我只需要切换具体实例即可