默认构造方法问题
1.问题
一个类中定义了构造方法,欲使用该类的默认构造方法实例化对象,但没有成功。
2.问题分析与解决
出错原因是如果程序员定义了一个或多个构造方法,将自动屏蔽默认的构造方法。
3.解决办法
显式定义无参数构造方法。注意:使用类的默认构造方法实例化对象所生成的对象属性值为零或空。可以在显式定义的无参数构造方法中为属于设置定值,从而完成初始化工作。
代码片
package com.hg.demo01;
import com.hg.demo02.Student;
public class demo01Student {
public static void main(String[] args) {
Student stu1=new Student();
stu1.show();
System.out.println("=======================");
Student stu2=new Student("袁胖胖",18);
stu2.show();
stu2.setAge(19);
stu2.show();
}
}
package com.hg.demo01;
public class Student {
private String name;
private int age;
public Student() {
}
public Student(String name) {
super();
this.name=name;
}
public Student(String name,int age) {
super();
this.name=name;
this.age=age;
}
public String getNam() {
return name;
}
public void setName(String name)
{
this.name=name;
}
public int getAge(){
return age;
}
public void setAge(int age)
{
this.age=age;
}
}
代码片
package com.hg.demo02;
public class demo01Student {
public static void main(String[] args) {
Student stu1=new Student();
stu1.setAge(22);
System.out.println("我是"+stu1.getName()+"我已经"+stu1.getAge()+"岁");
System.out.println("=======================");
Student stu2=new Student("猪猪",21);
System.out.println("我是"+stu2.getName()+"我已经"+stu2.getAge()+"岁");
stu2.setAge(19);
System.out.println("我是"+stu1.getName()+"我已经"+stu1.getAge()+"岁");
}
}
package com.hg.demo02;
public class Student {
private String name;
private int age;
public Student() {
System.out.println("我是小龙女朋友");
}
public Student(String name,int age) {
System.out.println("小龙是我男朋友");
this.name=name;
if(age>=0 &&age<=150)
this.age=age;
else
System.out.println("age 参数不合法");
}
public void setName(String name)
{
this.name=name;
}
public String getName(){
return this.name;
}
public void setAge(int age)
{
this.age=age;
}
public int getAge() {
return this.age;
}
public void show() {
System.out.println("我叫:"+this.name+" "+this.age+"岁");
}
}
成果展示