| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 707 人关注过本帖
标题:一个小程序出错了
只看楼主 加入收藏
MyStar
Rank: 1
等 级:新手上路
帖 子:75
专家分:9
注 册:2010-3-30
结帖率:93.75%
收藏
已结贴  问题点数:20 回复次数:8 
一个小程序出错了
class L
{
    int a,b ;
    L(int a,int b)
    {
        this.a=a;
        this.b=b;
    }
   void     print()
    {
        System.out.println(a+" "+b);
    }
}
class H extends L
{
    int x,y,z;
    H(int x,int y,int z)
    {
        super(x,y);
        this.z=z;
    }
  public     void print()
    {
        System.out.println("x="+x+" "+"y="+y+" "+"z="+z);
    }
}
public class Z
{
    public static void main(String args[])
    {
        H real=new H(6,7,8);
        real.print();
    }
}
结果咋不对啊!!刚学Java,请大家帮忙看看!!!
2010-04-21 22:05
lampeter123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:54
帖 子:2508
专家分:6424
注 册:2009-1-30
收藏
得分:0 
运行结果:
x=0 y=0 z=8

有什么问题了?

你的优秀和我的人生无关!!!!
    
    我要过的,是属于我自己的生活~~~
2010-04-21 22:49
myhnuhai
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:3
帖 子:425
专家分:1725
注 册:2010-3-17
收藏
得分:5 
class L
{
    int a,b ;
    L(int a,int b)
    {
        this.a=a;
        this.b=b;
    }
   void     print()
    {
        System.out.println(a+" "+b);
    }
}
class H extends L
{
    int x,y,z;
    H(int x,int y,int z)
    {
        super(x,y);
        this.z=z;
    }
  public     void print()
    {
        System.out.println("x="+x+" "+"y="+y+" "+"z="+z);
    }
}
public class Z                 Z没有定义。呵呵呵 ,修改一下!!!
{         
    public static void main(String args[])
    {
        H real=new H(6,7,8);
        real.print();
    }
}

不要让肮脏的记忆,迷失了原本纯洁的心灵!
2010-04-21 23:12
linjx0123
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:279
专家分:1362
注 册:2006-4-7
收藏
得分:15 
H(int x,int y,int z)
    {
        super(x,y);
        this.z=z;
    }
因为H继承了L,所以H有a,b的属性。而super(x,y);就是把a=x;b=y;
所以H的x,y没有被赋值,所以为0.如果要输出6,7,8应该改成

public     void print()
    {
        System.out.println("x="+a+" "+"y="+b+" "+"z="+z);
    }
2010-04-21 23:20
lampeter123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:54
帖 子:2508
专家分:6424
注 册:2009-1-30
收藏
得分:0 
以下是引用MyStar在2010-4-21 22:05:35的发言:

class L
{
    int a,b ;
    L(int a,int b)
    {
        this.a=a;
        this.b=b;
    }
   void     print()
    {
        System.out.println(a+" "+b);
    }
}
class H extends L
{
    int x,y,z;
    H(int x,int y,int z)
    {
        super(x,y);
        this.z=z;
    }
  public     void print()
    {
        System.out.println("x="+x+" "+"y="+y+" "+"z="+z);
    }
}
public class Z
{
    public static void main(String args[])
    {
        H real=new H(6,7,8);
        real.print();
    }
}
结果咋不对啊!!刚学Java,请大家帮忙看看!!!
不要起重复的变量名,因为属性x,y不是父类的属性,super(x,y); 只是对父类的属性a,b赋值,而子类的x,y仍是默认值0

你的优秀和我的人生无关!!!!
    
    我要过的,是属于我自己的生活~~~
2010-04-22 08:26
MyStar
Rank: 1
等 级:新手上路
帖 子:75
专家分:9
注 册:2010-3-30
收藏
得分:0 
回复 5楼 lampeter123
那怎么给x,y赋值啊?
2010-04-22 12:06
lampeter123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:54
帖 子:2508
专家分:6424
注 册:2009-1-30
收藏
得分:0 
以下是引用MyStar在2010-4-22 12:06:39的发言:

那怎么给x,y赋值啊?
class L //将父类的a,b 改为x,y
{
    int x,y ;
    L(int x,int y)
    {
        this.x=x;
        this.y=y;
    }
   void     print()
    {
        System.out.println(x+" "+y);
    }
}
class H extends L
{
    int z;
    H(int x,int y,int z)
    {
        super(x,y);
        this.z=z;
    }
  public     void print()
    {
        System.out.println("x="+x+" "+"y="+y+" "+"z="+z);
    }
}
public class Z
{
    public static void main(String args[])
    {
        H real=new H(6,7,8);
        real.print();
    }
}

你的优秀和我的人生无关!!!!
    
    我要过的,是属于我自己的生活~~~
2010-04-22 12:34
yukun314
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:35
专家分:120
注 册:2010-4-18
收藏
得分:0 
zhao laoshi dang mian wen ,hen hao jiejue de
2010-04-22 12:58
MyStar
Rank: 1
等 级:新手上路
帖 子:75
专家分:9
注 册:2010-3-30
收藏
得分:0 
回复 7楼 lampeter123
谢啦!!
2010-04-22 13:31
快速回复:一个小程序出错了
数据加载中...
 
   



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

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