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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© LINUS 中级黑马   /  2013-4-11 08:30  /  2517 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 LINUS 于 2013-4-11 08:47 编辑
  1. import java.util.ArrayList;
  2. import java.util.Iterator;

  3. public class ArrayListDemo{
  4.         public static void main (String [] args){
  5.                 ArrayList tm = new ArrayList();

  6.                 Student s1 = new Student("diaochan",1);
  7.                 Student s2 = new Student("xishi",3);
  8.                 Student s3 = new Student("yangguifei",6);

  9.                 tm.add(s1);
  10.                 tm.add(s2);
  11.                 tm.add(s3);

  12.                 Iterator it = tm.iterator();
  13.                 while(it.hasNext()){
  14.                 Student s = (Student)it.next();
  15.                 System.out.println(s);//如果不复写toString 这里直接调用get 可以么?
  16.                
  17.         }
  18.        System.out.println("**************************************");
  19.         for (int x = 0 ;x<tm.size() ;x++ ){
  20.                         Student s = (Student)tm.get(x);
  21.                         System.out.println(s.getName()+"**************"+s.getAge());//这里为什么不直接打印s呢?
  22.         }

  23. }

  24. }

  25. class Student{
  26.         private String name;
  27.         private int age;
  28.         

  29.         public Student(String name,int age){
  30.                 super();
  31.                 this.name=name;
  32.                 this.age = age;
  33.         }
  34.         public void setName(String name){
  35.                 this.name=name;
  36.         }
  37.         public String getName(){
  38.                 return name;
  39.         }
  40.         public void setAge(int age){
  41.                 this.age = age;
  42.         }
  43.         public int getAge(){
  44.                 return age;
  45.         }
  46.     public String toString(){
  47.         return name+"....."+age;
  48. }

  49. }
复制代码
是具体什么情况下 才考虑复写toString呢?

当我不写 get set 方法的时候  

主函数直接打印  s也是可以的  为什么还需要get set方法呢?

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

3 个回复

倒序浏览
是具体什么情况下 才考虑复写toString呢?----------当你需要按照你的规则输出打印的时候,譬如你可以println的时候多输出“..."就是个例子,不重写的话不会有它。

当我不写 get set 方法的时候 主函数直接打印  s也是可以的  为什么还需要get set方法呢?
--------------set和get是为了单独设置并取值用的,你重写的这个tostring,System.out.println(s.getName()+"**************"+s.getAge());/完全可以写成sysytem.out.println(s)

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
1,是具体什么情况下 才考虑复写toString呢?
答:当你所创建类需要toString 功能与父类toString功能不一样时,才复写toString
2.当我不写 get set 方法的时候 主函数直接打印  s也是可以的  为什么还需要get set方法呢?
答:类里的prvate变量是不可以被外界直接访问的,所以留个接口,即set,get修改,访问似有成员变量
3,System.out.println(s);//如果不复写toString 这里直接调用get 可以么?
答:因为你的
public String getName(){
                return name;
        }
返回的是String类型,所以可以直接用getName
回复 使用道具 举报
toString()方法就是把对象转换成String类型,转换的算法根据类型和实际需要而定。但是一般来说,这个toString方法不适合我们自己的类.
所以就要重写这个方法.至于重写成什么样,就随便了.个人认为就是为了输出观看方便,
比如你上面的Person类
public String toString(){

55.        return name+"....."+age;

56.}

重写了toString方法,才可以打印出类中的属性


get和set的用法,因为保持封装性,所以我们类中的属性一般定义成private,那我们类中的对象就无法访问,所以就提供get和set的方法
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马