2-8编程作业
来源:2-8 编程练习
rock221
2020-12-15 15:17:33
public class Person{
//私有属性:name(姓名)、age(年龄)、sex(性别)
private String name;
private int age;
private String sex;
//带参构造方法(name、age、sex为参数)
public Person(String name,int age,String sex){
this.setName(name);
this.setAge(age);
this.setSex(sex);
}
//通过封装实现对属性的get/set方法设定
public void setName(String name){
this.name=name;
}
public String getName(){
return name;
}
public void setAge(int age){
if(age<1||age>99){
this.age=18;
}else {
this.age=age;
}
}
public int getAge(){
return age;
}
public void setSex(String sex){
if(sex.equals("男")||sex.equals("女")){
this.sex=sex;
}else{
this.sex="男";
}
}
public String getSex(){
return sex;
}
//重写toString方法,表示形式为:姓名:+**+ 年龄:+**+ 性别:+**
public String toString(){
String str="姓名:"+this.getName()+" "+"年龄:"+this.getAge()+" "+"性别:"+this.getSex();
return str;
}
}
//测试类
public class Test {
public static void main(String[] args) {
//实例化对象,传入属性值(李明, 男,18)
Person one=new Person("李明",18,"男");
//打印输出对象信息
System.out.println(one);
System.out.println(one.toString());
}
}
有个疑问,在最后打印中,
System.out.println(one); 这个是父类Object中的toString方法还是已经改写过之后子类中的toString方法?
如果是子类中的toString方法,那么 最后2行代码不就没有意义了吗?打一行就行了啊
1回答
好帮手慕阿慧
2020-12-15
同学你好,同学的代码符合练习要求,完成的不错哦,继续加油!
System.out.println(one);会调用子类中的toString()方法。打印两次是想要告诉同学当一个类重新了toString()方法后,打印该类对象时,实际上是调用了该类中重写的toSting()方法。这是多态的表现,在后面Java多态课程中会讲到。
相似问题