• 0.00

  • 0.00

  • ,

Получение доступа к private полям??

Я заметил это решая задачу Stopwatch (Секундомер).
Обратите внимание на метод doStep класса Stopwatch.

package com.javarush.task.task16.task1612;

public class Solution {
    public static volatile boolean isStopped = false;

    public static void main(String[] args) throws InterruptedException {
        Runner ivanov = new Runner("Ivanov", 4);
        Runner petrov = new Runner("Petrov", 2);
        ivanov.start();
        petrov.start();
        Thread.sleep(2000);
        isStopped = true;
        Thread.sleep(1000);
    }

    public static class Stopwatch extends Thread {
        private Runner owner;
        private int stepNumber;

        public Stopwatch(Runner runner) {
            this.owner = runner;
        }

        public void run() {
            try {
                while (!isStopped) {
                    doStep();
                }
            } catch (InterruptedException e) {
            }
        }

        private void doStep() throws InterruptedException {
            stepNumber++;
            Thread.sleep((long)1000 / owner.speed);
            System.out.println(owner.getName() + " делает шаг №" + stepNumber + "!");
        }
    }

    public static class Runner {
        Stopwatch stopwatch;
        private String name;
        private int speed;

        public Runner(String name, int speed) {
            this.name = name;
            this.speed = speed;
            this.stopwatch = new Stopwatch(this);
        }

        public String getName() {
            return name;
        }

        public int getSpeed() {
            return speed;
        }

        public void start() {
            stopwatch.start();
        }
    }
}


А точнее на строку
Thread.sleep((long)1000 / owner.speed);

Этот код компилируется и запускается.
Как это работает?? Почему?? ведь поле speed класса Runner объявлено:
private int speed;

Получается что можно получить доступ к private полям объекта?
Умные люди! Объясните пожалуйста или тыкните носом если ответ очевиден.