封装、抽象、继承、多态

封装

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语句等。

posted @   sc-lixiaolong  阅读(112)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示