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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 我叫MT 中级黑马   /  2014-1-2 19:16  /  870 人查看  /  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 个回复

倒序浏览
没人回答么?好急!
回复 使用道具 举报
obj 是父类   Student s = (Student)obj  转换成 之类对象 这样就可以使用之类独有的方法
回复 使用道具 举报
Faner 发表于 2014-1-2 19:45
obj 是父类   Student s = (Student)obj  转换成 之类对象 这样就可以使用之类独有的方法  ...

子类有哪些独有的方法?
回复 使用道具 举报
我叫MT 发表于 2014-1-2 19:54
子类有哪些独有的方法?

  不一定是方法  其他特有的数据 也行     比如说你这个student 类 里面的 一些特有的属性 age  和name  因为obj  是Object  是所有类的父类 你要想访问 student   类里age  用 obj .age    是无法访问到的 因为父类根本没有此属性   所有必须强转成student 类型     总体来说你要多看看多态!
回复 使用道具 举报
  此例子中  覆盖了  public int compareTo(Object obj)   方法 因为你不确定 比较的对象的类型 所以用了  上帝 这个父类      
回复 使用道具 举报
Faner 发表于 2014-1-2 20:04
此例子中  覆盖了  public int compareTo(Object obj)   方法 因为你不确定 比较的对象的类型 所以用了   ...

明白了  我多态这块还有点模糊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马