学习Java那么多年还不理解面向对象吗?

Posted by Don on December 12, 2018

众所周知Java是面向对象的编程语言,但是何为面向对象?这个问题面试的时候也经常会问到,学习Java初期我也非常懵,百度后发现一千个读者心中有一千个哈姆雷特,在这里我说一下我对面向对象的理解,如有不对还请指正。

面向对象的理解

面向对象编程是对业务处理过程中的实体及其属性与行为(方法)进行抽象和封装,然后通过的Java的继承、多态以及7大设计原则进行编程,以提高软件的重用性、灵活性和扩展性。

面向对象的三大特性:

  • 封装
    隐藏对象的属性和实现细节,仅对外提供公共访问方式,将变化隔离,便于使用,提高复用性和安全性。

  • 继承
    继承是使用已存在的类作为基础从而建立一个新的类,新类的定义可以增加新的数据或新的功能,也可以使用父类的功能, 但是不是选择性的继承父类某些功能。
    通过继承我们可以很简单方便的复用以前的代码,继承实现多态的方案之一。

关于继承请记住如下3点:
1.子类拥有父类非private的属性和方法
2.子类可以拥有自己的属性和方法,即子类可以对父类进行扩展
3.子类可以用自己的方式实现父类的方法

  • 多态
    所谓多态就是指程序中定义的引用变量所指向的具体类型和通过该变量发出的方法调用在编译时并不确定,而是在程序运行期间才能确定,即一个引用变量到底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须有程序运行期间才能决定

在Java中有2中形式可以实现多态:继承(多个子类对同一方法的重写)和接口(实现接口并覆盖接口中同一方法)

面向对象设计的7大原则

1.单一职责原则
2.开闭原则
3.接口隔离原则
4.里氏替换原则
5.依赖倒转原则
6.迪米特法则
7.合成复用原则

笔者曾经介绍过这7大原则,有兴趣的可以点此查看