黑马程序员技术交流社区

标题: 构造函数的打印问题 [打印本页]

作者: 方书堂    时间: 2011-12-8 20:04
标题: 构造函数的打印问题
本帖最后由 方书堂 于 2011-12-9 12:48 编辑

class Employee
{
        private String name;
        private String id;
        private double pay;
        Employee(String name,String id)
        {
                this.name=name;
                this.id=id;
                        }
        public void work()
{
System。out.println("employee work");
}
}

class EmployeeDemo
{
  Employee p=new Employee(String name,String id);

}不在前面的类中的构造函数内添加打印语句的话,下面怎么写才会打印出来name和id。
作者: 刘基军    时间: 2011-12-8 20:17
应该添加类似getName(),getId()的方法,如
class Employee
{
   ......
   public String getName()
   {
       return this.name;
   }
   .......
}
作者: 马伟奇    时间: 2011-12-8 20:18
可以添加get方法
作者: 马伟奇    时间: 2011-12-8 20:21

class Employee
{
        private String name;
        private String id;
        private double pay;
        Employee(String name,String id)
        {
                this.name=name;
                this.id=id;
                        }
        public String getName()
   {
      System。out.println(name);
   }
}
作者: 许邦存    时间: 2011-12-8 20:21
name和id都是private的,要想访问它们只能通过getName(),getId()的方法了,如同楼上那样。
作者: 周胜    时间: 2011-12-8 23:01
在Employee中写上getName()和getId()两个方法,在下面的类中调用!~
作者: 韩军博    时间: 2011-12-8 23:35
本帖最后由 韩军博 于 2011-12-8 23:36 编辑

重写父类中的toString()方法就好了

class Employee
{
         private String name;
         private String id;
         private double pay;
         Employee(String name,String id)
         {
                 this.name=name;
                 this.id=id;
          }
        public String toString()
       {
              return  "name="+  name  +  ","  +  "id=" +id;
      }
}


class EmployeeDemo
{
        Employee employ=new Employee("zhangsan",“1001”);
     employ.toString();
}

作者: 颜小飞    时间: 2011-12-8 23:39
首先,你这里声明对象时用Employee p=new Employee(String name,String id);是错误的
要想打印出这里的p对象的name和id的属性值的方式很多
1、在Employee中添加两个对应属性的get方法
2、在Employee重写中重写toString()方法
  public void toString()
  {
    System.out.print("name:"+name+",id:"+id);
  }
3、在构造方法中打印出来
4、用反射的方式取得在p这个对象中这两个属性的值
5、还有把这两个属性的访问修饰符设为public
以上这五种方式都可以输出这个属性的值

作者: 李明    时间: 2011-12-9 09:24
前面的变量都定为私有的,一般就要用定义get方法来取值,这就是java的封装性。
作者: 刘博    时间: 2011-12-9 10:10
在上面类中添加get(name);和get(id);
作者: 李振元    时间: 2011-12-9 10:29
基本的方法有两种,楼上的都提到了。
7楼是正解,为第一种方法。
另一种就是提供成员变量的get()和set()方法,但如果重写构造函数的话,最好提供一个不带参数的构造方法。
作者: 方书堂    时间: 2011-12-9 12:48
颜小飞 发表于 2011-12-8 23:39
首先,你这里声明对象时用Employee p=new Employee(String name,String id);是错误的
要想打印出这里的p对 ...

了解了。谢谢




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