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多态课程中会讲到。

0

0 学习 · 16556 问题

查看课程

相似问题