|
|
1
1
四点: (1)为了详细说明Vivyzer写了什么,代码编译是因为基类中的主方法可以访问类自己的私有方法。如果您将代码编写为:
那么代码就不能编译了。 (2)语言允许这样做来支持用例,其中基类的作者可以添加一个新的私有方法,而不必担心其他作者的派生类型。 (3)如果方法不是私有的,您将看不到这一点。如果基类的f()具有包或受保护的可见性,那么该方法将是一个虚拟方法。 (4)JAVA不支持点2的反向。具体来说,如果派生类具有私有方法,并且新版本的基类型引入了具有相同签名的非私有方法,则派生类和新的基类不能一起使用。还有其他语言(例如C)可以更全面地解决这些模块化的世代发展问题。如果你对这方面感兴趣,这是一本关于Artima的好书: Versioning, Virtual, and Override |
|
2
4
一个常见的(ish)误解是private是每个实例,而不是每个类。 例如:
有些人认为上面的代码不应该起作用,因为“a”是“私有的”。不是这样的,任何foo实例都可以访问任何其他foo实例的私有变量/方法。”private”只是指其他类(在本例中不是foo)的实例不能访问私有成员。 |
|
|
3
3
为了保持事物的直线性,派生类(dc)确实继承了
|
|
|
4
1
主方法位于基类内部,私有方法对它可见。如果main在其他类中,它将不会编译。 |
|
|
user29759326 · 如何返回递归函数中的最后一个值? 8 月前 |
|
|
malife89 · 将java中的字符串读取为正确的日期格式 8 月前 |
|
|
Tim · 在java中,有没有更快的方法将字节数组写入文件? 8 月前 |
|
|
rudraraj · java中未声明最终变量 8 月前 |
|
|
Bala Ji · 以下BFS的实施效率如何? 8 月前 |