[面向对象学习笔记] 封装、抽象、继承、多态分别可以解决那些编程问题
封装 是什么封装 封装也叫作信息隐藏或者数据访问保护。类通过暴露有限的访问接口,授权外部仅能通过类提供的方法来访问内部信息或者数据。例如在Java中我们在定义一个类时,会给一个类加属性,我们给将这些类属性设置为private,然后给这些属性添加一些方法,有的只能被获取,不能被修改,有些可以被修改,但是不可以被重置。在Java中是通过一些关键字来提供访问权限控制。如果Java中没有提供这些关键词,所有的属性默认都是public的,那么外部的代码都可以随意的更改对象中属性的值,这样是无法达到隐藏信息和保护数据的目的,也就是无法支持封装特性。 封装的意义 如果我们对类中属性的访问不加以控制,那任何代码都以访问、修改类中的属性,虽然这样看起来更加灵活,但是灵活以为着不可控,属性可以随意被修改,修改的逻辑可能散落在哥哥角落,势必会影响代码的可读性、可维护性。 除此之外,类通过有效的方法暴露必要的操作,也能提高类的易用性。我们把属性封装起来,暴露少许的几个不要的方法给调用者,调用者就不需要了解太多背后的业务细节,用错的概率就减少很多。 抽象 什么是抽象 在面向对象编程中,我们常借助编程语言提供的接口类或者抽象类这两种语法机制,来实现抽象这一特性。例如:在Java中,是通过interface和abstract关键字语法来实现。这种抽象是指把一些类的公共行为抽象到更高的层次。