当前位置: 首页 > 知识库问答 >
问题:

私有变量访问[重复]

秦浩漫
2023-03-14

为什么我能够直接访问p的私有数字属性在StrikerhasSameNumber方法的实现中?似乎使用getter应该是访问它的唯一(如果不是,最好的实践)方式。我错过了什么?

public class Football {

    public static abstract class FootballPlayer {
        private final int number;

        FootballPlayer(int num) {
            number = num;
        }

        int getNumber() {
            return number;
        }

        abstract boolean hasSameNumber(FootballPlayer p );
    }

    public static class Striker extends FootballPlayer {
        Striker(int num) {
            super(num);
        }
        boolean hasSameNumber(FootballPlayer p ) {
            return this.getNumber() == p.number;
        }
    }

}

共有1个答案

樊烨烨
2023-03-14

Java——对数字的访问发生在足球的身体内,因此是允许的。

JLS 6.6.1

我承认我对这个具体的例子感到惊讶。

 类似资料:
  • 因此,我试图用Kotlin开发一个Android应用程序,作为纸笔RPG伴侣。现在我想创造一个暴民阶层 在另一个活动中,我想显示以下信息: Android studio不断告诉我不能访问“名称”:尽管它在“Mob”中是私有的。我以为这就是我得到< code>get()的原因? 也许有更多静态编程语言经验的人可以帮忙。提前谢谢你。

  • 问题内容: 编写以下代码时,编译器如何不抱怨? 即使它是在其中编写的同一类的实例,也不应该在处给出编译错误吗?毕竟,我试图直接访问一个私有变量。 该代码甚至可以正常运行。 问题答案: 私有成员可以从声明它的类中的任何方法访问,无论该方法是访问其自己的()实例的私有成员还是访问其他实例的私有成员。 JLS 6.6.1中 对此进行了说明: …否则,如果将成员或构造函数声明为私有,则仅当访问发生在封装成

  • 我在kotlin中初始化了一些私有Int变量。 我的问题是,当我旋转手机时,会创建一个新的is活动,在当前代码中,分数被分配为0。是否有任何方法可以只初始化一次?出路是什么? 我在使用分数创建内部有一些计算。由于 onRestoreInstanceState 是在 onCreate 之后执行的,除了在 onStart 中定义分数之外,有没有办法保持分数值在屏幕旋转时不受影响?

  • 我在Angular-6服务中使用了一个私有变量。ts。 它被用来像 我想为tagSubject编写一个单元测试。 我不能做,因为它会给出错误,比如。我现在能做什么。请帮忙。

  • 问题内容: 我希望我说的是我的话。我有这样的课: 和其他这样的类: 这是从其他类(在该示例代码中)访问和更改其值的正确方法吗,是否有更好或更合适的解决方案?请注意,这是具有方法的类。 问题答案: 从另一个类访问私有变量的正确方法是使用getter和setter方法。否则,您应该将该变量公开。 那是: 但是,直接返回私有数据是一种不好的做法- 允许外部代码修改您的私有状态。通常,您应该返回私有数据的

  • 问题内容: 我正在尝试编写一种使用反射将在类中获取私有字段的方法。 这是我的课程(此示例已简化): 所以说我这样做: 我得到一个因为是私人的。有没有一种方法可以使用反射来获取/设置私有变量?(我已经在C#中完成了,但这是我第一次在Java中尝试过它)。如果您想知道为什么需要这样做:),这是因为有时在单元测试期间,将私有变量设置为虚假值以进行故障测试等很方便。 问题答案: 弄清楚了。需要