黑马程序员技术交流社区

标题: 今天敲了对象代码,发现问题来了,输出一大堆,看看谁能帮我整理一下 [打印本页]

作者: lcrobert    时间: 2015-5-23 00:12
标题: 今天敲了对象代码,发现问题来了,输出一大堆,看看谁能帮我整理一下
//讲英语这行为定义为抽象接口
interface Speak
{
        public abstract void English();
}
class person//定义一个父类
{
        private String name;//姓名
        private int age;//年龄

        public person(){}//定义空参

        public person(String name,int age)//定义实参
        {
                this.name = name;
                this.age = age;
        }
       
        /*定义代码块*/
        {
                eat();
                sleep();
                System.out.println("在吃饭");
                System.out.println("在睡觉");
        }

        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 void sleep()//成员函数--行为
        {
                System.out.println(name+"在睡觉");
        }

        public void eat()//成员函数--行为
        {
                System.out.println(name+"在吃饭");
        }

        public void show()//输出类函数
        {
                System.out.println("姓名:"+name+",年龄:"+age);
        }
}

//定义一个乒乓球运动员的子类,继承person父类,实现English接口
class pingpongsport extends person implements Speak
{
        public pingpongsport(){}

        public pingpongsport(String name,int age)
        {
                super(name,age);
        }

        public void exercise()
        {
                System.out.println("乒乓球运动员在练习");
        }

        public void life()
        {
                eat();
                sleep();
                System.out.println("乒乓球运动员在吃饭");
                System.out.println("乒乓球运动员在睡觉");
        }

        public void English()
        {
                System.out.println("乒乓球运动员讲英语");
        }
}

//定义一个篮球运动员的子类,继承person父类
class basketballsport extends person
{
        public basketballsport(){}

        public basketballsport(String name,int age)
        {
                super(name,age);
        }

        public void exercise()
        {
                System.out.println("篮球运动员在练习");
        }

        public void life()
        {
                eat();
                sleep();
                System.out.println("篮球运动员在吃饭");
                System.out.println("篮球运动员在睡觉");
        }
}

//定义一个乒乓球教练的子类,继承person父类,实现English接口
class pingpongmaster extends person implements Speak
{
        public pingpongmaster(){}

        public pingpongmaster(String name,int age)
        {
                super(name,age);
        }

        public void coach()//指导
        {
                System.out.println("乒乓球教练在指导");
        }

        public void life()
        {
                eat();
                sleep();
                System.out.println("乒乓球教练在吃饭");
                System.out.println("乒乓球教练在睡觉");
        }

                public void English()
        {
                System.out.println("乒乓球教练讲英语");
        }
}

//定义一个篮球教练的子类,继承person父类
class basketballmaster extends person
{
        public basketballmaster(){}

        public basketballmaster(String name,int age)
        {
                super(name,age);
        }

        public void coach()//指导
        {
                System.out.println("篮球教练在指导");
        }

        public void life()
        {
                eat();
                sleep();
                System.out.println("篮球教练在吃饭");
                System.out.println("篮球教练在睡觉");
        }
}

class persontext
{
        public static void main(String[] args)
        {
                Speak e = new pingpongsport();
                e.English();
                Speak e1 = new pingpongmaster();
                e1.English();

                System.out.println("++++++++++++++++++++++++++++++++++++++++++++++++++++");

                pingpongsport p = new pingpongsport();
                p.setName("邓亚萍");
                p.setAge(25);
                p.life();

                System.out.println("====================================================");

                pingpongmaster p1 = new pingpongmaster();
                p1.setName("刘国梁");
                p1.setAge(45);
                p1.life();

                System.out.println("----------------------------------------------------");

                basketballsport b = new basketballsport();
                b.setName("姚明");
                b.setAge(35);
                b.life();
               
                System.out.println("\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\////");

                basketballmaster b1 = new basketballmaster();
                b1.setName("曼达斯");
                b1.setAge(55);
                b1.life();
        }
}
作者: yky1678    时间: 2015-5-23 09:57
那是因为你使用了构造代码块,所以每次创建对象,Person类中的构造代码块都会被执行一次,所以输出东西那么多,如果你将这个构造代码块改为静态代码块,就只执行一次,输出就少了。但是你代码块里面有非静态方法,又调用了非静态属性,所以改起来就比较麻烦。



作者: hzhzhen    时间: 2015-5-23 10:59
同意楼上的呢!!!
作者: l598790586    时间: 2015-5-23 22:55
我觉得可以把构造代码块去掉,你这个构造代码块没有什么意义,把你想要输出的  name +“在睡觉” 这两个放到有参数的构造函数中
public Person(String name,int age)//定义实参
        {
                 this.name = name;
                 this.age = age;
                                 System.out.println(name+"在吃饭");
                                 System.out.println(name+"在睡觉");
         }
这样子,你每new一个对象,便会输出  xxx在吃饭,xxx在睡觉。
这样你没
作者: 南方小道士    时间: 2015-5-23 23:14
楼上已经说了
作者: 871165471@qq.co    时间: 2015-5-24 10:05
                同意
作者: 王先荣    时间: 2015-5-24 10:09
同意1楼




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2