A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© 我叫MT 中级黑马   /  2014-1-2 19:16  /  1106 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 我叫MT 于 2014-1-3 17:44 编辑
  1. import java.util.*;
  2. class TreeSetDemo
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 TreeSet ts = new TreeSet();
  7.                 ts.add(new Student("lisi02",22));
  8.                 ts.add(new Student("lisi007",20));
  9.                 ts.add(new Student("lisi09",19));[b][/b]
  10.                 ts.add(new Student("lisi08",19));
  11.                 Iterator it = ts.iterator();
  12.                 while(it.hasNext())
  13.                 {
  14.                         Student stu = (Student)it.next();
  15.                         System.out.println(stu.getName()+"..."+stu.getAge());
  16.                 }
  17.         }
  18. }

  19. class Student implements Comparable
  20.         private String name;
  21.         private int age;

  22.         Student(String name,int age)
  23.         {
  24.                 this.name = name;
  25.                 this.age = age;
  26.         }

  27.         public int compareTo(Object obj)
  28.         {
  29.                 if(!(obj instanceof Student))
  30.                         throw new RuntimeException("不是学生对象");
  31.                 Student s = (Student)obj;
  32.                 System.out.println(this.name+"....compareto....."+s.name);
  33.                 if(this.age>s.age)
  34.                         return 1;
  35.                 if(this.age==s.age)
  36.                 {
  37.                         return this.name.compareTo(s.name);
  38.                 }
  39.                 return -1;
  40.         }
  41.         public String getName()
  42.         {
  43.                 return name;

  44.         }
  45.         public int getAge()
  46.         {
  47.                 return age;
  48.         }
  49. }
复制代码

第34行,有一个转换不懂Student s = (Student)obj;为什么要在这里转换,还有就是为什么要转obj,这里的obj代表什么

6 个回复

正序浏览
Faner 发表于 2014-1-2 20:04
此例子中  覆盖了  public int compareTo(Object obj)   方法 因为你不确定 比较的对象的类型 所以用了   ...

明白了  我多态这块还有点模糊
回复 使用道具 举报
  此例子中  覆盖了  public int compareTo(Object obj)   方法 因为你不确定 比较的对象的类型 所以用了  上帝 这个父类      
回复 使用道具 举报
我叫MT 发表于 2014-1-2 19:54
子类有哪些独有的方法?

  不一定是方法  其他特有的数据 也行     比如说你这个student 类 里面的 一些特有的属性 age  和name  因为obj  是Object  是所有类的父类 你要想访问 student   类里age  用 obj .age    是无法访问到的 因为父类根本没有此属性   所有必须强转成student 类型     总体来说你要多看看多态!
回复 使用道具 举报
Faner 发表于 2014-1-2 19:45
obj 是父类   Student s = (Student)obj  转换成 之类对象 这样就可以使用之类独有的方法  ...

子类有哪些独有的方法?
回复 使用道具 举报
obj 是父类   Student s = (Student)obj  转换成 之类对象 这样就可以使用之类独有的方法
回复 使用道具 举报
没人回答么?好急!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马