要显示一个类的信息,怎么做?
1、 一个类通常要提供显示类的信息的方法。但如果自己写如show()会不规范。
2、 打印一个类,其实是调用类的toString( )方法。如果类自己没有重写toString()方法,则调用Object的String()方法。
示例:
package bu18;
public class Test2 {
public static void main(String[] args){
Student stu1 = new Student();
stu1.setName("张三");
stu1.setAge(20);
System.out.print(stu1);
}
}
class Student extends Object{
public String name;
private int age;
public int getAge() {
return age;
}
public void setAge(int age) {
if(age<0 ||age>150){
System.out.println("日志:输入年龄不合法。"+age);
age = 18;//学生默认18岁
}
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String toString(){
return "学生:姓名="+this.name+";年龄="+this.age;
}
}
改进:
1、 空构造方法
2、 在多次调用“+”来创建新字串的地方,改用StringBuffer。
到此,才是一个比较完善的类设计。
class Student{
public String name;
private int age;
public Student(){
}
public int getAge() {
return age;
}
public void setAge(int age) {
if(age<0 ||age>150){
System.out.println("日志:输入年龄不合法。"+age);
age = 18;//学生默认18岁
}
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String toString(){
StringBuffer bf = new StringBuffer();
bf.append("学生:姓名=");
bf.append(this.name);
bf.append(";年龄=");
bf.append(this.age);
return bf.toString();
}
}
同学提问:如果一个类有10个属性,那么就要对付一共20个getter和setter。会不会太多了?
回答:不会。一是因为getter和setter可以通过IDE(如Eclipse)生成;二是getter和setter在很多JAVA前沿的技术都必须设计。比如不这样设计网页就不能获取的成员变量如name的值。