封装
1、封装的定义
封装也叫作信息隐藏或者数据访问保护。类通过暴露有限的访问接口,授权外部仅能通过类提供的方式来访问内部信息或者数据。
在java中,private、public等关键字就是访问权限控制语法。private关键字修饰的属性只能类本身访问,可以保护其不被类之外的代码直接访问。如果java语言没有提供访问权限控制语法,所有的属性默认都是public的,那么任意外部代码都可以通过类似对象点的方式来直接访问、修改属性,也就没有办法达到隐藏信息和保护数据的目的了,也就无法支持封装特性了。
2、封装的意义
如果我们对类的属性访问不做限制,那么任何代码都可以直接访问、修改类中的属性,虽然这样看起来更加灵活,但从另一方面来说,过度灵活也意味着不可控,属性可以随意被以各种奇葩的方式修改,而且修改逻辑可能散落在代码中的各个角落,势必影响代码的可读性、可维护性。
除此之外,类仅仅通过有限的方法暴露必要的操作,也能提高类的易用性。如果我们把类属性都暴露给类的调用者,调用者想要正确地操作这些属性,就势必要对业务细节有足够的了解。而这对于调用者来说也是一种负担。相反,如果我们将属性封装起来,暴露少许的几个必要的方法给调用者,调用者就不需要了解太多背后的业务细节,用错的概率就减少很多。
抽象
1、抽象的定义
抽象讲的是如何隐藏方法具体实现,让调用者只需要关心方法提供了那些功能,并不需要知道这些功能是如何实现的。
在java中,我们使用接口类interface关键字语法或者抽象类abstract关键字语法来实现抽象这一特性。
2、抽象的意义
在面对复杂系统的时候,人脑能承受的信息复杂度是有限的,所以我们必须忽略掉一些非关键性的实现细节。而抽象作为一种只关注功能点不关注实现的设计思路,正好帮我们的大脑过滤掉许多非必要的信息。
继承
1、继承的定义
继承是用来表示类之间的is-a关系,比如猫是一种哺乳动物。从继承关系上来讲,继承可以分为两种,单继承和多继承。单继承表示一个子类只继承一个父类,多继承表示一个子类可以继承多个父类,比如猫既是哺乳动物,又是爬行动物。
为了实现继承这个特性,编程语言需要提供特殊的语法机制来支持,比如java使用extends关键字来实现继承,C#使用冒号。不过有些语言只支持单继承,比如java、PHP等。
2、继承的意义
继承最大的一个好处就是代码复用。不过过度使用继承,继承层次过深过复杂,就会导致代码可读性、可维护性变差。为了了解一个类的功能,可能需要按照继承关系一层层往上查看代码。
多态
1、多态的定义
多态是指,子类可以替换父类,在实际的代码运行过程中,调用子类的方法实现。
多态这种特性也需要编程语言提供特殊的语法机制来实现。
- 编程语言要支持父类对象引用子类对象。
- 编程语言要支持继承。
- 编程语言要支持子类可以重写父类中的方法。
2、多态的意义
多态是很多设计模式、设计原则、编程技巧的代码实现基础,比如策略模式、基于接口而非实现编程、依赖倒置原则、里式替换原则、利用多态去掉冗长的if-else语句等。
标签:封装,调用者,继承,子类,多态,访问,抽象 From: https://www.cnblogs.com/sc-lixiaolong/p/17539358.html