私有变量访问

Private Variable access

为什么我可以在 StrikerhasSameNumber 方法实现中直接访问 p 的私有 number 属性?似乎使用 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;
        }
    }

}

编辑:

接受的答案说明了为什么这是允许的 - 谢谢! preferred/best-practice 访问 number 的方式是什么 - 通过 getter 还是直接访问?

Java - 对 number 的访问发生在 Football 的正文中,因此是允许的。

JLS 6.6.1

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