本帖最后由 郭天龚 于 2013-7-16 09:12 编辑
- import java.util.*;
- class Person implements Comparable<Person>
- {
- private String name;
- private int age;
- Person(String name,int age){
- this.name=name;
- this.age=age;
- }
- public int compareTo(Person p){
- int flag=new Integer(this.age).compareTo(new Integer(p.age));
- if (flag==0)
- {
- return this.name.compareTo(p.name);
- }
- return flag;
- }
- public String toString(){return this.name+"..."+this.age;}
- }
- class Test
- {
- public static void main(String[] args)
- {
- TreeSet<Person>ts=new TreeSet<Person>();
- ts.add(new Person("a",20));
- ts.add(new Person("b",21));
- ts.add(new Person("a",20));
- ts.add(new Person("c",20));
- System.out.println(ts);
- }
- }
复制代码 上面这段代码编译和运行都是没有问题的,但是我有一个疑问就是int flag=new Integer(this.age).compareTo(new Integer(p.age));在这行中对象p为什么直接可以用p.age的方式来访问他的私有成员。
我做了一个测试
- class Person
- {
- private String name;
- Person(String name){
- this.name=name;
- }
- }
- class Test2
- {
- public static void main(String[] args)
- {
- Person p=new Person("guotiangong");
- System.out.println(p.name);
- }
- }
复制代码 在这一行中System.out.println(p.name);通过P.name来访问私有成员,编译就会报错。说是不能访问他的私有成员。我要问的就是为什么int flag=new Integer(this.age).compareTo(new Integer(p.age));在这行中对象p可以用p.age的方式来访问他的私有成员。那位大神帮我解惑一下,谢谢!
|