求科普,为什么new出的类调用private方法

chi_9 发布于 2018/12/21 18:19
阅读 342
收藏 0

代码

运行结果

大概知道怎么回事,但是不知道怎么说…………

加载中
0
麦地兜兜
麦地兜兜

自己调自己当然可以访问, 把`new Testl`放到外部类看看

0
kakai
kakai

1、首先Test1是个可执行类,里面含有静态main方法。

2、静态main方法仍然是包含在Test1中的方法。

3、privateT方法是Test1私有方法,而main方法也在Test1中,故而main中仍可以调用Test1的私有方法。

4、具体静态方法中new对象,可以借鉴单例模式去加深理解!

chi_9
chi_9
回复 @银杏卡卡 : [大拇指]
kakai
kakai
回复 @chi_9 : 方法是没有并发一说的,除非方法体内使用了被竞争的资源,比如类成员变量或者数据操作等,这些都是存在竞争读写的。私有方法只能被自己访问,外部不能访问,所以从编码开始这就是确定了的。
chi_9
chi_9
回复 @银杏卡卡 : 像这种共有方法中调用私有方法的,在并发情况下会出现问题吗?能确保每个在共有方法中new的Class调用的私有方法都是自己的吗?
kakai
kakai
回复 @chi_9 : 嗯,是可以,不过这种可执行类的主方法一般在外部是不会去调用它的。不过静态公共方法都能在外部调用。
chi_9
chi_9
main方法在其他类中也是可以掉用到
0
tcxu
tcxu

首先澄清什么是"方法的调用 call a method"
科普概念:

  1. 可以调用一个方法的东西,只能是另一个方法,或在迭代 reursion 的情况下,是该方法本身。
  2. 一个 new 出来的 对象 object 或称 实体 instance,保存着给定对象的"地址", 它只能被用作一个引荐(引用)。
  3. 一个方法,可以通过某个给定的引用,来调用另一个方法。
  4. 一个方法,在定义它的时候,可以通过引用,或不通过引用,直接调用同类中的其它方法,无论被调方法是公有的,还是私有的。

原因是:

  1. 一个类的成员方法 member method,可以 访问 access 或 调用 call 该类的任何 public/protected/private 属性 attribute 或 方法 method。
  2.  public void publicT() 是 Test1 类的一个成员方法。
  3.  private void privateT() 也是 Test1 类的一个成员方法。

也就是说,

  1. 私有方法 privateT() 的主调方法是 publicT();
  2. new出来的对象,只是一个引荐(引用);
  3. 两者( privateT() 和 publicT())都是  Test1 类的 成员方法; 
  4. 无论 方法 privateT()是公有,还是私有,方法 publicT() 当然可以通过某种引荐(引用)调用 方法 privateT() 。
返回顶部
顶部