封装与抽象
封装和抽象是OOP(面向对象编程)语言中两个不同但又相关的概念。封装是将数据和行为作为单个实体组合在一起的概念。另一方面,抽象是表示实体行为与实现方式的过程。
什么是封装?
封装是将数据和操作它们的操作封装到单个实体中的过程。这实际上意味着为了访问数据,应该使用某些预定义的方法。换句话说,封装的数据不能直接访问。这确保了数据的完整性,因为用户无法按自己的意愿直接访问和修改数据。用户只能通过对用户公开可用的方法来获取或设置数据值。这些方法通常提供数据验证,以便只允许在字段中**适当格式的数据。因此,封装的好处有三个方面。通过封装,程序员可以使类的字段变为只读或只写。其次,类可以完全控制存储在其字段中的内容。最后,类的用户不必担心它的数据是如何存储的。在Java中,程序员可以将所有实例变量声明为private,并提供get和set方法(公共的)来访问和修改私有字段。
什么是抽象?
抽象是将表示细节与实现细节分离的过程。开发者松了一口气,这样做的细节就更复杂了。相反,程序员可以专注于实体的表示或行为细节。简单地说,抽象关注的是如何使用某个实体,而不是如何实现它。抽象本质上隐藏了实现的细节,这样即使实现方法随着时间的推移而改变,程序员也不必担心它会如何影响他的程序。一个系统可以被抽象成几个层次。例如,低级抽象层将显示硬件细节,而高级抽象层将只显示实体的业务逻辑。抽象这个词可以用来指实体和过程,这会导致一些混淆。作为一个过程,抽象意味着提取必要的细节,而忽略一个或一组项目的不重要的细节;而作为一个实体,抽象意味着一个只有基本细节的实体的模型或视图。在Java中,程序员可以使用关键字abstract将一个类声明为一个抽象实体,抽象实体表示真实世界实体的基本定义特征。
封装和抽象有什么区别?