Java私有,受保护,公共和默认

您是Java程序员,所以您知道我在说什么。 public修饰符使方法或字段可从应用程序中的任何位置访问。 那是简单的部分。 但是,您能告诉我protected包和私有包的区别吗? (提示:当您不在方法或字段前面编写任何访问修饰符时,package 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

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值