草庐IT

私有链

全部标签

java - 为什么允许访问另一个对象的私有(private)字段?

最近,我观察到在Java中访问priavte字段的意外行为。考虑以下示例,它说明了行为:publicclassA{privateinti;为什么我可以在foo方法中访问类A的另一个对象的私有(private)字段(第二种情况)? 最佳答案 私有(private)字段保护的是一个类,而不是一个实例。主要目的是允许类独立于其API实现。在它们之间隔离实例,或保护实例的代码免受同一类的静态代码的影响将不会带来任何结果。 关于java-为什么允许访问另一个对象的私有(private)字段?,我们

java - 在 Java 中,为什么父类(super class)方法不能从子类实例访问 protected 或私有(private)方法/变量?

让我们从另一个行为开始:即使您将方法/变量声明为私有(private),同一类的另一个实例也可以访问它。没关系,我可以忍受。我称这些为类私有(private)而不是实例私有(private)。现在是问题部分:例如,在运行时我希望能够检查this类中的所有String变量是否不为null,如果它们为null,则应将其更改为字符串“NULL”。我可以使用反射遍历变量并获取它们的值。但是,如果我扩展我的类并添加私有(private)或什至protected变量,我的基类将无法访问它们。我必须先对变量进行setAccessible,然后才能使用它们。所以请向我解释为什么基类(父类(superc

java - 子类是否继承父类(super class)的私有(private)实例变量

Dosubclassesinheritprivatefields?这个问题解决了同样的问题,但我不太明白它如何满足下面(看似)矛盾的情况。http://docs.oracle.com/javase/tutorial/java/IandI/subclasses.html表示“子类不继承其父类的私有(private)成员。”这意味着它既不继承私有(private)实例变量也不继承私有(private)方法,对吧?但是,如果它从其父级继承公共(public)访问器方法,这将如何工作?它返回一个它不知道存在的实例变量?此外,我的计算机科学书籍(Baron的APComputerScienceA)

java - 通过java中的内联创建对象访问私有(private)元素

我是java的新手,正在尝试一些访问方法,但遇到了一些我不明白的事情。下面的代码工作正常,打印9并且没有给出任何编译错误。我认为这段代码应该给出一个编译错误并且数字应该无法从测试方法访问,因为newHuman()是一个完全不同的类的实例。任何人都可以向我解释这里发生了什么吗?publicclassTest{publicstaticvoidmain(String[]args){intnumber=9;test("holla",newHuman(){@Overridevoidtest(){//TODOAuto-generatedmethodstubSystem.out.println(nu

c# - 在 C# 或 Java 中子类化时是否可以覆盖私有(private)成员?

我正在学习C#和Java,并且有一个关于继承的问题。是否可以覆盖父类(superclass)(基类)中的私有(private)成员?在我看来,这是不正确的,因为访问修饰符会阻止成员被访问。 最佳答案 这不是一个愚蠢的问题,但它给出了隐藏变量的另一个概念。Java中的字段只是隐藏的,实际上并没有被覆盖(这并不意味着我们在尝试此操作时会遇到编译时错误,而是它们并没有真正意义上的被覆盖)。覆盖意味着应该根据对象的运行时类型而不是声明的类型来调用成员。但是Java中字段的绑定(bind)始终是静态的,因此它仅基于对象引用的声明类型。在文章中

java - 如何测试只修改私有(private)类成员变量的void方法?

我正在尝试对初始化一些私有(private)字段的类中的方法进行单元测试:publicvoidinit(Propertiesprops)throwsException{this.language=props.getProperty(Constants.LANGUAGE,Constants.LANGUAGE_DEFAULT);this.country=props.getProperty(Constants.COUNTRY,Constants.COUNTRY_DEFAULT);try{this.credits=Integer.valueOf(props.getProperty(Consta

Java OOP 公共(public)、私有(private)、 protected

我了解public、private和protected的作用。我知道您应该使用它们来遵守面向对象编程的概念,并且我知道如何在使用多个类的程序中实现它们。我的问题是:我们为什么要这样做?为什么我不应该让一个类直接修改另一个类的全局变量?即使您不应该,为什么还需要protected、private和public修饰符?就好像程序员不相信自己不会这样做,即使他们是编写程序的人。提前致谢。 最佳答案 你是对的,这是因为我们不能相信自己。可变状态是计算机程序复杂性的一个主要因素,构建一开始看起来不错的东西太容易了,但随着系统变大,它会失去控制

java - 我们可以重写 Java 中的构造函数吗?构造函数可以是私有(private)的吗?

我将不胜感激对这些问题的解释:我们能否在Java中覆盖构造函数?Constructor可以是私有(private)的吗? 最佳答案 不,您不能覆盖构造函数。它们不是遗传的。但是,每个子类构造函数都必须将或者链接到子类中的另一个构造函数或到父类(superclass)中的构造函数。例如:publicclassSuperclass{publicSuperclass(intx){}publicSuperclass(Stringy){}}publicclassSubclassextendsSuperclass{publicSubclass(

java - 通过 Dijkstra 算法中私有(private)方法的 JUnit 测试用例

我正在尝试找出为类练习实现测试用例的最佳方法。我的类练习提供了已知的错误,因此我应该编写一个测试用例使其失败,从而找到错误。它涉及使用Dijkstra算法。这是所提供代码的正确版本:privateintgetNodeWithMinimumDistanceFromUnsettled(){intmin;intnode=0;Iteratoriterator=unsettled.iterator();node=iterator.next();min=distances[node];for(inti=1;i单独版本已知bug如下:if(unsettled.contains(i)){if(dist

Mac下使用Docker快速布署FastGPT实现AI私有知识库

FastGPT是一个基于LLM大语言模型的知识库问答系统,提供开箱即用的数据处理、模型调用等能力。同时可以通过Flow可视化进行工作流编排,从而实现复杂的问答场景!官网地址为:https://github.com/labring/FastGPT应用场景具体的玩法是什么:添加或者采集文章,添加到自己的知识库,FastGPT会向量化保存。整合上ChatGPT。当你提问的内容匹配到自己采集的文章时,会让AI整合知识库的内容进行回复。比如:下载100篇指定品类的小红书爆文。配合ChatGPT。可以让AI更高质量的产出此品类下的文章。搭建自己定制化的AI智能知识助手。本文参考官方教程,进行布署,在Mac