Java面向对象的理解

Java 三大特性

封装,继承,多态

封装

是指利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体,数据被保存在抽象数据类型的内部,尽可能地隐藏内部的细节,只保留一些对外接口使之与外部发生联系。
封装有几个好处

1. 良好的封装能够减少耦合。
2. 类内部的结构可以自由修改。
3. 隐藏信息,实现细节。

继承

Definitions: A class that is derived from another class is called a subclass (also a derived class, extended class, or child class). The class from which the subclass is derived is called a superclass (also a base class or a parent class). 通过使用继承我们能够非常方便地复用以前的代码,还能对类进行扩展, 能够大大的提高开发的效率。但是有几点缺陷:

1. 父类变,子类就必须变。
2. 继承破坏了封装,对于父类而言,它的实现细节对与子类来说都是透明的。
3. 继承是一种强耦合关系。

多态

定义: 所谓多态就是指程序中定义的引用变量所指向的具体类型,以及该引用变量调用的方法在编译期间是不确定的,而是在程序运行时才确定,即一个引用变量到底会指向哪个类的实例对象,该引用变量调用的方法到底是哪个类中实现的方法,必须在由程序运行期间才能决定。因此, 多态具有以下两个特点:

1. 指向子类的父类引用由于向上转型了,它只能访问父类中拥有的方法和属性,而对于子类中存在而父类中不存在的方法,该引用是不能使用的;  
2. 若子类重写了父类中的某些方法,在调用该些方法的时候,必定是使用子类中定义的这些方法(动态连接、动态调用)

优点:

  1. 减少重复代码,使代码变得简洁,可维护。
  2. 提高代码扩展性。 新增子类不影响已存在类的多态性,子类也很容易就能扩展新功能
  3. 在创建对象的时候,结合工厂模式,当需要不同的子类实现时,只需在工厂类里修改即可,不用关心具体创建的是什么对象

实现方式: 继承和接口。
多态存在的三个必要条件

  1. 继承
  2. 重写
  3. 父类引用指向子类对象