java封装的问题。。。。。。。

有a,b两个类,b有个私有变量c和其他方法d,为什么a可以通过调用d方法的形式把c打印出控制台来??

私有变量c不是只能本类使用吗?

私有变量确实是只有本类才能使用。
b的私有变量c是给b的其他方法d使用的,没有直接给a使用。
a调用b的其他方法d间接的可以使用私有变量c,但不能直接使用,只能通过其他方法d使用。
b通过其他方法d来约束别的类(比如a),只能通过方法d的方式去使用私有变量c。
建议在入门的时候看点好书,别看渣渣java书籍,因为书上说的不清楚,你理解就更不清楚了。

本来就是可以这么用的,这个也是私有变量的正确用法。
私有的意思是指外部类不能直接调用对象.变量来直接查询或修改私有变量的值,只能通过类中已经定义了的方法来进行。
例如b b1 = new b();之后,不能通过b1.c来直接操作c这个私有变量,只能通过调用b类中的函数来进行。

目前我也是小白,我说说我的理解,各位大佬也帮我点评下
类成员的封装:
1、在不封装的情况下得到的数据是不安全的,比如你类的一个成员属性是String类型的 gender,这时候我直接传入一个我不是男人也不是女人的字符串进来,你想下得到的结果是什么
2、实例化一个对象的时候写法的问题,获取值与设置值你会一目了然
3、我们一般不会直接去修改一个类的变量,而是通过方法去访问
4、面向对象思想核心就是封装、继承、多态,封装之后的产物更具有类属性的特点,这样子我们可以在封装过程中对数据进行安全的处理和操作。打个比方我们男人这个类,有年龄、性别、地区等等,我们可以在这个类中对其数据进行安全的处理。
纯手打,这是我的领悟,不知道对你有没有用,相互学习,如阐述过程中有问题的,还望大伙指正

c是私有变量,不能直接打印,但是可以通过其他方法比如get,set方法来操作进行

我认为这是多态 并不是封装。基础确实很重要 !~

通过get打印或者间接调用b中的方法打印