| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 479 人关注过本帖
标题:又有个问题看不明白了,难道猪就~?
只看楼主 加入收藏
小猪笨笨
Rank: 1
等 级:新手上路
帖 子:109
专家分:0
注 册:2006-4-19
收藏
 问题点数:0 回复次数:5 
又有个问题看不明白了,难道猪就~?

class point{ // 程序4-8
int x, y;
point(int x, int y){
System.out.println("父类构造函数被调用!"+x+" "+y);
}
}
class circle extends point{
circle(int r, int x, int y){

super(x, y);

System.out.println("子类构造函数被调用!");
System.out.println(r+" "+x+" "+y) ;
}
}
public class testInherence {
public static void main(String args[ ]) {
circle c1=new circle(1,1,1);

System.out.println(c1.x+" "+c1.y);
}
}

为什么 System.out.println(c1.x+" "+c1.y); 的结果是 0 0 , 而不是1 1 呢?

2006-04-21 14:36
小猪笨笨
Rank: 1
等 级:新手上路
帖 子:109
专家分:0
注 册:2006-4-19
收藏
得分:0 
哦 c1.x c1.y的值是父类point的 x y 值吧  
这样说对不对啊? 我加了一句看的:
class point{ // 程序4-8
int x, y;
point(int x,int y){

this.x=2; this.y=2;
System.out.println("父类构造函数被调用!"+x+" "+y);
}
}
class circle extends point{

circle(int r, int x, int y){

super(x, y);

System.out.println("子类构造函数被调用!");
System.out.println(r+" "+x+" "+y) ;
}
}
public class testInherence {
public static void main(String args[ ]) {
  circle c1=new circle(1,1,1);
 System.out.println(c1.x+" "+c1.y);
}
}

这样运行后 c1.x c1.y 的值就是  2 2 了

A flea in the JAVA
2006-04-21 15:09
J_labyrinth
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2006-4-21
收藏
得分:0 
class point{
int x, y;
point(int x,int y){
this.x=x; this.y=y;
System.out.println("父类构造函数被调用!"+x+" "+y);
}
}
class circle extends point{
circle(int r, int x, int y){
super(x, y);
System.out.println("子类构造函数被调用!");
System.out.println(r+" "+x+" "+y) ;
}
}
public class testInherence {
public static void main(String args[ ]){
circle c1=new circle(1,1,1);
System.out.println(c1.x+" "+c1.y);
}
}
自己看!

獨自一人在銤宮中漫步……
2006-04-21 17:32
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 
编程就是要反复地试,慢慢的你就会了解一些东西的

可惜不是你,陪我到最后
2006-04-21 18:27
★王者至尊★
Rank: 1
等 级:新手上路
帖 子:528
专家分:0
注 册:2006-3-28
收藏
得分:0 
第一个代码父类中定义的x,y被初始化为0
而你在子类的构造函数中使用super关键字 创建子类对象时先调用父类的构造函数 所以c1.x 和c1.y就是0了
第二个代码中 使用this关键字 初始化父类x,y为2 所以最后得到2

------Java 爱好者,论坛小混混,学习中------
2006-04-21 18:31
huai23
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2006-2-6
收藏
得分:0 

说的再白一点,你所写的那两个构造函数根本就没有给类中定义的变量X和Y赋值,你在构造函数里写的语句只是完成显示所传进来的实际参数的值,并没有写赋值语句,所以说你的构造函数没有起到设值的功能,跟没有一样(即系统默认加的)。


2006-04-21 23:34
快速回复:又有个问题看不明白了,难道猪就~?
数据加载中...
 
   



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

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