黑马程序员技术交流社区
标题:
关于复写toString 与 get set构造函数的问题
[打印本页]
作者:
LINUS
时间:
2013-4-11 08:30
标题:
关于复写toString 与 get set构造函数的问题
本帖最后由 LINUS 于 2013-4-11 08:47 编辑
import java.util.ArrayList;
import java.util.Iterator;
public class ArrayListDemo{
public static void main (String [] args){
ArrayList tm = new ArrayList();
Student s1 = new Student("diaochan",1);
Student s2 = new Student("xishi",3);
Student s3 = new Student("yangguifei",6);
tm.add(s1);
tm.add(s2);
tm.add(s3);
Iterator it = tm.iterator();
while(it.hasNext()){
Student s = (Student)it.next();
System.out.println(s);//如果不复写toString 这里直接调用get 可以么?
}
System.out.println("**************************************");
for (int x = 0 ;x<tm.size() ;x++ ){
Student s = (Student)tm.get(x);
System.out.println(s.getName()+"**************"+s.getAge());//这里为什么不直接打印s呢?
}
}
}
class Student{
private String name;
private int age;
public Student(String name,int age){
super();
this.name=name;
this.age = age;
}
public void setName(String name){
this.name=name;
}
public String getName(){
return name;
}
public void setAge(int age){
this.age = age;
}
public int getAge(){
return age;
}
public String toString(){
return name+"....."+age;
}
}
复制代码
是具体什么情况下 才考虑复写toString呢?
当我不写 get set 方法的时候
主函数直接打印 s也是可以的 为什么还需要get set方法呢?
作者:
绿树林
时间:
2013-4-11 08:41
是具体什么情况下 才考虑复写toString呢?----------当你需要按照你的规则输出打印的时候,譬如你可以println的时候多输出“..."就是个例子,不重写的话不会有它。
当我不写 get set 方法的时候 主函数直接打印 s也是可以的 为什么还需要get set方法呢?
--------------set和get是为了单独设置并取值用的,你重写的这个tostring,System.out.println(s.getName()+"**************"+s.getAge());/完全可以写成sysytem.out.println(s)
作者:
张子凯
时间:
2013-4-11 08:47
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
作者:
罗家辉
时间:
2013-4-11 08:48
toString()方法就是把对象转换成String类型,转换的算法根据类型和实际需要而定。但是一般来说,这个toString方法不适合我们自己的类.
所以就要重写这个方法.至于重写成什么样,就随便了.个人认为就是为了输出观看方便,
比如你上面的Person类
public String toString(){
55. return name+"....."+age;
56.}
重写了toString方法,才可以打印出类中的属性
get和set的用法,因为保持封装性,所以我们类中的属性一般定义成private,那我们类中的对象就无法访问,所以就提供get和set的方法
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2