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

java私有属性和私有方法

java私有属性和私有方法_Java私有,受保护,公共和默认相关推荐

  1. python 类 公有属性、私有属性、公有方法、私有方法

    python 类 公有属性.私有属性.公有方法.私有方法 #!/usr/bin/env python # -*- encoding: utf-8 -*- """ @Int ...

  2. java读取属性文件的方法_java读取属性文件的方法

    主要有两种: 一是使用Class的getResourceAsStream方法: private static Properties props; private static final String ...

  3. 封装详解,private,修改私有属性get/set方法,类和对象总结

    方法,属性,有参与无参构造函数,对私有属性private的访问get/set方法都在类中:在我们的项目中只有一个实现类main,在main中将类实例化为对象,通过对象来调用类中的方法,属性,有参与无参 ...

  4. 【Java SE 代码回顾】——day05_私有属性、公有方法、switch

    这个系列是对javaSE课程代码的回顾,所有Demo都是亲自动手实现的,并做了小小的change,为了方便自己理解和后期复习,代码里加了大量的注释.现对所有知识点的代码进行复习整理,进一步理解.完善代 ...

  5. java中私有变量和方法_Java 私有变量和私有方法

    作者: Jakob Jenkov 译者:叶文海(yewenhai@gamil.com) 内容索引 访问私有变量 访问私有方法 在通常的观点中从对象的外部访问私有变量以及方法是不允许的,但是 Java ...

  6. python私有属性怎么定义_Python中私有属性的定义方式

    Python没有类似于Java的private关键字, 但也可以为类定义私有属性. 只需将属性命名变为以__开头, 例如 __field. 示例代码: class Vector2D(object): ...

  7. java中容易混淆的方法_java中容易混淆的概念

    java中容易混淆的概念 1. 谈谈 final, finally, finalize 的区别final-修饰符(关键字)如果一个类被声明为 final,意味着它不能再派生出新的子类,不 能作为父类被 ...

  8. java測試動態方法_java反射学习

    反射的核心Class类 Class类是一个特殊的类,不能手动创建,只能由jvm来创建. jvm在类加载时会为每个类生成一个与之对应的Class对象在Java堆中(且每个类只会有一个对应的Class对象 ...

  9. java实现线程同步的方法_Java实现线程同步方法及原理详解

    一.概述 无论是什么语言,在多线程编程中,常常会遇到多个线同时操作程某个变量(读/写),如果读/写不同步,则会造成不符合预期的结果. 例如:线程A和线程B并发运行,都操作变量X,若线程A对变量X进行赋 ...

最新文章

  1. 上海交大发布 MedMNIST 医学图像分析数据集 新基准
  2. arraycopy用法_Java复制(拷贝)数组的4种方法:arraycopy()方法、clone() 方法、copyOf()和copyOfRan...
  3. By.Xpath快速定位页面元素常用方法
  4. 区块链BaaS云服务(14)华大BGI区块链“Baas接口“
  5. [deviceone开发]-数据绑定示例
  6. 四轴PID控制算法详解(单环PID、串级PID)
  7. 给谷歌输入法增添自定义词组,提高输入效率
  8. PHP-Windows下搭建PHP-MSF环境【原创】
  9. Pytorch 为什么每一轮batch需要设置optimizer.zero_grad
  10. 这届年轻人,连泡面也买不起了
  11. Java程序实现密钥库的维护
  12. ASIHTTPRequest報錯解決辦法
  13. linux使用触摸屏驱动程序,Linux触摸屏驱动
  14. html通过拼音首字母定位,javascript实现通过拼音首字母快速选择下拉列表
  15. 【Python】Python爬虫豆瓣电影数据并进行数据分析
  16. 外包网站建设需要注意什么
  17. DayDayUp:平均每篇文章1毛! 本博主自2020年6月1日起,如有任何问题可在博客贴吧留言或者私信博主(包括并不限于GUI软件编写、安装及编程语言中的bug、AI算法设计等),非诚勿扰!
  18. vue获取地址栏参数值
  19. 分享 | 带来全新交互体验的『支付宝AR』技术大解密
  20. matlab里面floor是什么意思,matlab中的fix、round、floor、ceil的区别与含义

热门文章

  1. jzoj1350-游戏(某C组)【SPFA,图,最短路】
  2. 【最小生成树】路线规划(nowcoder 217603)
  3. Spark SQL(六)之加载数据的参数配置
  4. Spring整合mybatis中的sqlSession是如何做到线程隔离的?
  5. Spring MVC竟然有5种参数绑定的方式?你知道几种?
  6. vue-router 如何在当前路由下重新点击当前路由的router-link实现刷新
  7. 部署shiro官方源码时,执行maven命令出错
  8. MySQL数据库开发的 36 条军规
  9. Java 集合系列03之 ArrayList详细介绍(源码解析)和使用示例
  10. Java 9 新特性概述