Java无参构造方法的作用

classPerson{privateStringname;//表示人的姓名privateintage;//表示人的年龄publicvoidtell(){//定义说话的方... class Person{
private String name ; // 表示人的姓名
private int age ; // 表示人的年龄
public void tell(){ // 定义说话的方法
System.out.println("姓名:" + this.getName() + ",年龄:" + this.getAge()) ;
}
public Person(){
System.out.println("########");
}
public void setName(String n){
name = n ;
}
public void setAge(int a){
if(a>=0&&a<=200){
age = a ;
}
}
public String getName(){
return name ;
}
public int getAge(){
return age ;
}
};
public class OODemo10{
public static void main(String args[]){
Person per = new Person() ; // 实例化对象
System.out.println(per.getName());
System.out.println(per.getAge());
}
};

随便拷贝了一个代码
问题:我知道结果会输出
########
null
0
我们说构造方法的主要目的是为类中的属性初始化的,那无参构造方法的目的是不是也是这样,那么上面代码中的无参构造具体是怎么为类中的属性初始化的,我知道在使用new关键字的时候才会调用构造方法。但是上面代码中的null和0应该是在定义name和age属性时就产生了的。还有假如没有定义构造方法会自动生成一个无参构造,为什么要自动生成无参构造呢,还有无参构造的方法体是不是像上面那样打印###可以随便写
展开
 我来答
wxy12580
2013-04-22
知道答主
回答量:19
采纳率:0%
帮助的人:5.7万
展开全部
构造方法的主要目的是为类中的属性初始化,当然无参构造方法可以预设一些属性的值,也可以是在我们要实例化这个对象时,需要初始化或者实例化某些变量,也可能条用某些方法。例如:在swing编程中经常会在无参的构造方法中实例化某些容器或是这是窗口属性等。

上面代码中的无参构造方法并没有初始化类中的属性,这是输出了一条语句。在无参构造方法中初始化一般是固定的值或者条用某个方法得到的值。
public Person(){
this.name = "张三";
this.age = 20;
}

因为name和age不是static
只有你new Person()时候才会为属性name = null, age = 0完成初始化内存分配(默认)

如果没有构造方法,也不自动生成无参构造方法,我怎么来实例化这个对象。这个类也就没有意义。

一般构造方法只是初始化属性。当然可以随意打印了。打印只是方便跟踪。
flyingFish211
推荐于2018-06-04 · TA获得超过2.1万个赞
知道大有可为答主
回答量:1.5万
采纳率:50%
帮助的人:1.1亿
展开全部
定义name 和age,不会自动null和0
只有你new Person()得时候JVM装载Person得时候才会为属性name = null, age = 0完成初始化内存分配。

通常构造方法里面不建议增加无关的####打印这样,但是你可以写的。

假如没有定义构造方法会自动生成一个无参构造,为什么要自动生成无参构造呢?
无参的默认不写,但是如果你写了其他的
public Person(String name),如果你想直接new Persn(),就必须要写,你可以理解为public Person(String name)‘覆盖‘掉了无参。多样化构造方法可以造成代码适当明了一点点,某种程度上可以让某些程序员风格一致。
譬如a构造对象的时候总喜欢Person p = new Person();
B喜欢Person p = new Person("zhang san");
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
市懿93
2014-01-21 · TA获得超过196个赞
知道答主
回答量:85
采纳率:0%
帮助的人:86.9万
展开全部

无参嘛,没有参数;需要注意以下几点:

  1. 你可显示为你的类定义无参构造方法、及有参构造方法;构造方法可重载。

  2. 如果你的类没有定义任何构造方法,则它会存在一个默认的无参构造方法,这个是JVM在加载类时为它自动添加的,继承至超类Object。

  3. 如果你的类只定义了其他的有参构造方法,那么就不存在无参构造方法了。只有显示为它定义了无参构造方法才能使用无参构造方法创建对象。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
pkbisi_159
2011-12-07 · TA获得超过746个赞
知道小有建树答主
回答量:464
采纳率:0%
帮助的人:461万
展开全部
有参数的构造方法的主要目的是为类中的属性初始化的

而无参数的构造方法,可以控制new对象
假设你的午餐构造方法不是public 修饰 而是project
那么别人将不只能直接new一个对象,这就起到了控制作用

为什么要自动生成无参构造呢?
你没有构造方法就不能new出对象 所以就给你生成一个无参构造方法(总不能生成有参数的吧,)

一般构造方法就是来控制你new对象的 还有就是初始化属性
至于你说无参构造的方法体是不是像上面那样打印###可以随便写,你随便写意义不大
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
flyingFish211
2018-01-01 · TA获得超过2.1万个赞
知道大有可为答主
回答量:1.5万
采纳率:50%
帮助的人:1.1亿
展开全部
定义name 和age,不会自动null和0
只有你new Person()得时候JVM装载Person得时候才会为属性name = null, age = 0完成初始化内存分配。

通常构造方法里面不建议增加无关的####打印这样,但是你可以写的。

假如没有定义构造方法会自动生成一个无参构造,为什么要自动生成无参构造呢?
无参的默认不写,但是如果你写了其他的
public Person(String name),如果你想直接new Persn(),就必须要写,你可以理解为public Person(String name)‘覆盖‘掉了无参。多样化构造方法可以造成代码适当明了一点点,某种程度上可以让某些程序员风格一致。
譬如a构造对象的时候总喜欢Person p = new Person();
B喜欢Person p = new Person("zhang san");
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式