закрытая переменная экземпляра, доступная с «публичной» областью видимости внутри CompareTo - PullRequest
1 голос
/ 14 августа 2011

Как ни странно, переменная экземпляра brand является частной областью, но доступна общедоступным способом внутри метода compareTo.

public class Car implements Comparable<Car> {
    private String brand;

    public String getBrand() {
        return brand;
    }

    public void setBrand(String brand) {
        this.brand = brand;
    }

    public int compareTo(Car o) {
        return this.brand.compareTo(o.brand);
    }
}

Ответы [ 3 ]

4 голосов
/ 14 августа 2011

Переменная класса brand является закрытой для других классов, а не для самого класса Car.

например, если вы попробуете

class Foo
{
     Foo()
     {
          Car car = new Car();
          string brand = car.brand; // <-- will not compile; 
                                    // should use car.getBrand()
     }
}
2 голосов
/ 14 августа 2011

Вы можете получить доступ к брендовому члену экземпляра O, потому что вы находитесь в другом экземпляре того же типа

1 голос
/ 14 августа 2011

Private указывает, что переменная может быть доступна только членам класса.В вышеописанном сценарии нет ничего плохого.

...