私有云搭建
您是Java程序员,所以您知道我在说什么。 public
修饰符使方法或字段可从应用程序中的任何位置访问。 那是简单的部分。 但是,您能告诉我protected
和包私有的区别吗? (提示:如果不在方法或字段前面编写任何访问修饰符,则private包是对方法或字段的保护。请注意!我说谎!)我的采访经验是很多人不知道。 对于Java开发人员,我认为这是不可行的吗? 并不是的。 即使您不知道,您仍然可能是一名优秀的Java开发人员。 也许现在您将在某个地方查找它。 也许Java规范是一个很好的入门文档。
我会告诉你一些更有趣的事情。
从字面上看,没有候选人知道什么是
private
。 而您,阅读本文,也不知道。
好的,这很挑衅。 您可能是碰巧用这种无用的信息充斥大脑的少数人之一,甚至您可能已经阅读了Java规范。
大多数Java程序员认为私有方法和字段只能从类内部访问。 有些人甚至认为仅来自对象实例内部。 他们相信:
public class PrivateAccessOtherObject {
public PrivateAccessOtherObject(int i) {
this.i = i;
}
private int i;
void copyiTo(PrivateAccessOtherObject other){
other.i = i;
}
}
不可能。 (它是。)
那么什么是私人的?
最新的JLS指出,只能在包含成员或构造函数声明的顶级类(第7.6节)的正文中访问私有类成员或构造函数。
Java规范中的示例并不是最好的描述规则。 也许那只是一个简单的例子。 像这样的东西可能更好地解释了这个概念:
public class PrivateFieldsContainingClass {
private static class NestedClass {
private int i;
}
private NestedClass nestedClassInstance = new NestedClass();
void set(int i) {
nestedClassInstance.i = i;
}
int get() {
return nestedClassInstance.i;
}
}
可以从封闭类以及NestedClass
内部访问字段i
。 这个例子也很简单,但更使规范例子错过了。 这种可能性有什么实际用途? 并不是的。
奖励问题:为什么我说我在说谎?
翻译自: https://www.javacodegeeks.com/2014/08/java-private-protected-public-and-default.html
私有云搭建