草庐IT

Private_dirty

全部标签

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

java - 启动和运行私有(private) Maven 存储库的最快方法是什么?

我正在与一些开发人员合作,我们希望在我们完成项目代码的早期迭代时分享一些jar。我们只想pop一个快速的私有(private)maven存储库服务器以供短暂使用。在ruby​​中,它就像键入一样简单:gemserver好像没有?mvnserver即使是对github的简单maven依赖也可以暂时使用。显然,也没有主流可靠的maven插件吗?gem'nokogiri',:git=>'https://github.com/tenderlove/nokogiri.git',:branch=>'1.4'我找到的最简单的答案在这里:HostingaMavenrepositoryongithub.

java - 使用包私有(private)方法以促进单元测试是一种好习惯吗?

有时我发现自己处于这样的情况下,如果我将某些方法的可见性从私有(private)更改为包私有(private),以便促进单元测试模拟、断言...,单元测试会更容易。一个例子就是这个假设我有一个包含4个属性X、Y、Z和R的对象A,其中X、Y和Z是集合,R是每个集合的不同元素之间的关系,例如关系将由元素组成X,Y的一个元素和Z的一个元素。对象A不允许直接访问X、Y、Z或R,相反它提供了丰富的API,允许您在X、Y和Z上创建新元素,也允许您将这些元素混合到新的R元素中。对于单元测试,拥有publicgetX()、publicgetY()、publicgetZ()和publicgetR()方法