到底什么才是java的封装?工厂方法中的封装如何理解?

参考
封装:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。
封装原则:将不需要对外提供的内容都隐藏起来、把属性都隐藏,提供公共方法对其访问。

那么,在工厂方法的产品接口中,其抽象方法是对外提供公共访问的方法,其具体实现类中,对应实现方法是被隐藏的实现细节。那么,其是否可作为一个封装的典型案例。

假如,工厂方法的产品接口中,若其无实现类,其接口方法A有方法体(java1.8之后有),那对外来说,其A的方法体内容是否对外暴露了,接口方法A是否有被封装起来?

只要对外直接提供的方法或者属性就是暴露的。
封装可以理解为,属性私有化,对外提供公有的方法来间接访问属性。

封装?你随便写一个类,就叫封装。封装无非就是把一些你觉得可以写在一起的变量、方法写在一起,供外调用。无论你说的什么工厂方法,普通的entity,哪怕是你随便写的Test.class,不也是一种封装?

抽象,封装,继承,多态是面向对象设计的关键思想。
所谓的封装其实并不是所谓的隐藏。
封装所隐藏的是封装体的实现细节,是过程。
例如,在将一个算法写在方法体中,在使用这个方法的时候,引用这个对象的接口就代表了引用算法本身,而不需要关心底层是如何实现的,这其实就是一种封装。
封装是对细节的封装,但不等于封闭。
在设计原则中提到,我们应该对代码的修改封闭,而对代码的扩展打开。
比如一个类中有一个成员变量A,我们对其封装,并暴露出了get方法和set方法两个接口。
此时,他人在使用我们的类时,就可以使用get和set来修改变量A的内容。如果A是一个抽象的接口,
那么通过set不同的实现类,就可以完成功能的扩展或者替换。
而不需要对原来的代码进行修改。
这便是封装的威力!
简单的说封装是为了:避免不变的部分被修改,允许可变的部分被扩展。
隐藏细节,代码复用。