标题:[求助]请指点一下!
只看楼主
cd_tiger
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2006-6-10
 问题点数:0 回复次数:9 
[求助]请指点一下!
public class Flower {
private int petalCount = 0;
private String s = new String("null");
Flower(int petals) {
petalCount = petals;
System.out.println(
"Constructor w/ int arg only, petalCount= "
+ petalCount);
}
Flower(String ss) {
System.out.println(
"Constructor w/ String arg only, s=" + ss);
s = ss;
}
Flower(String s, int petals) {
this(petals);
this(s); this.s = s; // Another use of "this"
System.out.println("String & int args");
}
Flower() {
this("hi", 47);
System.out.println(
"default constructor (no args)");
}
void print() {
this(11);
System.out.println(
"petalCount = " + petalCount + " s = "+ s);
}
public static void main(String[] args) {
Flower x = new Flower();
x.print();
}
}

请问该程序的调用顺序是什么?我实在看不懂他们之间的调用关系是怎么回事!
搜索更多相关主题的帖子: private public null 
2006-07-06 13:52
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
得分:0 
先构造出一个 Flower对象,然后调用这个对象的print()方法

可惜不是你,陪我到最后
2006-07-06 14:02
cd_tiger
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2006-6-10
得分:0 
该程序的运行结果

Constructor w/ int arg only, petalCount= 47
String & int args
default constructor (no args)
petalCount = 47 s = hi

为什么会是47呢而不是11?版主拜托了,我是菜菜
2006-07-07 11:47
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
得分:0 
这主要是构造函数的互相调用问题
一开始是无参构造函数,然后它调用了两个参数的构造函数,两个参数的构造函数又调用了一个参数的构造函数
最后才把Flower对象构造出来了

可惜不是你,陪我到最后
2006-07-08 10:09
chenjiang001
Rank: 1
等 级:新手上路
帖 子:133
专家分:0
注 册:2006-3-21
得分:0 
public class Flower {
private int petalCount = 0;
private String s = new String("null");
Flower(int petals) {
petalCount = petals;
System.out.println(
"Constructor w/ int arg only, petalCount= "
+ petalCount);
}
Flower(String ss) {
System.out.println(
"Constructor w/ String arg only, s=" + ss);
s = ss;
}
Flower(String s, int petals) {
this(petals);
this(s); this.s = s; // Another use of "this" //这一块运行有问题呀,this必须写在第一行.两个this该怎么办?
System.out.println("String & int args");
}
Flower() {
this("hi", 47);
System.out.println(
"default constructor (no args)");
}
void print() {
this(11);
System.out.println(
"petalCount = " + petalCount + " s = "+ s);
}
public static void main(String[] args) {

2006-07-09 12:31
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
得分:0 
this(s); this.s = s; // Another use of "this" //这一块运行有问题呀,this必须写在第一行.两个this该怎么办?

当然不能这样调用,不能一个构造调用两个构造函数
因为this()要放在第一行
把this(s)改为this.s=s;就不可以了吗

可惜不是你,陪我到最后
2006-07-09 12:38
chenjiang001
Rank: 1
等 级:新手上路
帖 子:133
专家分:0
注 册:2006-3-21
得分:0 
void print() {
void print() {
this(11);
System.out.println(
"petalCount = " + petalCount + " s = "+ s);
}
this(11); 这里是调用构造函数吗?
构造函数是不能显式调用的呀?
清高手讲讲原因!
谢谢了!

2006-07-09 12:42
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
得分:0 
void print() {
void print() {
this(11);
System.out.println(
"petalCount = " + petalCount + " s = "+ s);
}
你这里就不是调用构造函数了
你这样做会编译通不过的

可惜不是你,陪我到最后
2006-07-09 12:45
chenjiang001
Rank: 1
等 级:新手上路
帖 子:133
专家分:0
注 册:2006-3-21
得分:0 
void print() {
this(11);
System.out.println(
"petalCount = " + petalCount + " s = "+ s);
}
那一楼的为什么能运行出结果?
难道他的this(11);
是调用??

2006-07-09 12:55
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
得分:0 
一楼的程序连编译都过不了

可惜不是你,陪我到最后
2006-07-09 13:29



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-76879-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 1.421154 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved