注册 登录
编程论坛 JAVA论坛

关于重新定义构造函数的问题,新手请教

小布咻 发布于 2015-05-20 08:49, 591 次点击
package package4;

public class Demo2 {


    public static void main(String[] args)
    {
        Person p1=new Person("张三",21,3500f);
        
        p1.print();   //这个是什么意思?输出?
        
    }

}

class Person
{
    String name;
    int age;
    float salary;


Person(String name,int age,float salary)

{       this.name=name;          //为什么用this?  他的用法是什么?
        this.age=age;
        this.salary=salary;

}
Person()    //这个在这里是什么意思?
{}
   
    public String toString()
    { return  "name:"+name+'\t'+"age:"+age+'\t'+"salary:"+'\t'+salary ;}

     String getName()
    { return name;}
   
    int getAge()
    {  return age;}

    float getSalary()
    { return salary;}
   
    void  print()
    { System.out.println(this.toString());}
}
5 回复
#2
大脸猫Biu2015-05-20 10:28
this.name=name;          //为什么用this?  他的用法是什么?
this代表着当前对象
Person()    //这个在这里是什么意思?
{}
这是定义了一个无参数构造方法

 p1.print();   //这个是什么意思?输出?
这是Person类对象p1调用Person类里面的print()方法
#3
小布咻2015-05-20 12:17
回复 2楼 大脸猫Biu
为什么要调用print方法?后面好像 没用到啊
#4
林月儿2015-05-20 12:28
package package4;

public class Demo2 {


    public static void main(String[] args)
    {
        Person p1=new Person("张三",21,3500f);
        
        p1.print();   //这个是什么意思?输出?            //调用Person类的print()方法
        
    }

}

class Person
{
    String name;
    int age;
    float salary;


Person(String name,int age,float salary)

{       this.name=name;          //为什么用this?  他的用法是什么?      //因为这里的形参和属性名一样,this.XXX表示本类属性,如果不加形参就不能同名!
        this.age=age;
        this.salary=salary;

}
Person()    //这个在这里是什么意思?          //无参构造器,你上面定义了有参构造器那么如果删掉这句你的程序不会报错,但是不能有Person p=new Person()
{}                                              //加上这句就可以有了,他的使用当没有定义有参的就不用,定义了就要写出来!
   
    public String toString()
    { return  "name:"+name+'\t'+"age:"+age+'\t'+"salary:"+'\t'+salary ;}

     String getName()
    { return name;}
   
    int getAge()
    {  return age;}

    float getSalary()
    { return salary;}
   
    void  print()
    { System.out.println(this.toString());}
}

不知道解决了你的问题没有
#5
小布咻2015-05-20 18:53
回复 4楼 林月儿
为什么调用print?后面好像没用到啊?
#6
林月儿2015-05-20 18:57
回复 5楼 小布咻
void  print()
    { System.out.println(this.toString());}
这里定义了这个方法,功能是打印对象具体信息
当然你可以重写toString()方法
1