2011-08-14 9 views
1

不思議なことに、インスタンス変数brandはプライベートスコープですが、メソッドcompareToの内部では "public"にアクセスできます。privateインスタンス変数はcompareTo内の "public"スコープでアクセス可能

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); 
    } 
} 
+0

はい、これは真実です。質問は何ですか? – Affe

答えて

4

クラス変数brandは他のクラスではないクラスCar自体にプライベートです。例えば

あなたは

class Foo 
{ 
    Foo() 
    { 
      Car car = new Car(); 
      string brand = car.brand; // <-- will not compile; 
            // should use car.getBrand() 
    } 
} 
2

を試す場合は、同じタイプの別のインスタンス

1

Privateは、変数のみがアクセスすることができるように指定しているので、あなたは、インスタンスOのブランドのメンバーにアクセスすることができますクラスのメンバー。上記のシナリオには何も問題はありません。

関連する問題