A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Huylens 中级黑马   /  2015-5-8 10:47  /  599 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

代码:
class test_parent
{
        int x = 5;
        int y = 10;
        void set_value(int a, int b)
        {
                x = a;
                y = b;
        }//当执行test_parent tp=new test_parent();tp.set_value(1,2);然后test.get_x()所得的结果还是5,test.get_y()所得的结果是10,这是为什么?难道这个set_value(1,2)函数操作对x和y的赋值是一点影响都没有吗?为什么没有影响?
        int get_1()
        {
                return this.x + this.y;
        }
        int get_2()
        {
                return x - y;
        }
        int get_x()
        {
                return x;
        }
        int get_y()
        {
                return y;
        }
}

class test_4 extends test_parent
{
        int y;
        test_4(int a)
        {
                y = a;
                x=a;              
        }
//当执行以下代码的test_4  a3=new test_4(-1);                a3.set_value(-5,5);   然后a3.get_x()所得的结果是-5;       a3.get_y()所得的结果是10;      a3.get_2()结果是5;出现这样的结果怎么解释?
        void set_value(int a, int b)
        {
                x = a;
                y = b;
        }
        int get_2()
        {
                return y;
        }
}

3 个回复

倒序浏览
上面那个parent 的 setvalue之后是会修改的啊!不知你怎么测试的。至于下面的怪异问题是因为你在子类中定义了y,然后你又是调用的父类的getx,gety的方法,这个当然就走父类了。
你可以在子类中加入int x,这样就全显示的父类的xy值,
想显示自己的,就在子类中重写一下父类的getx,y的方法。
回复 使用道具 举报
lovejjfg 发表于 2015-5-8 12:15
上面那个parent 的 setvalue之后是会修改的啊!不知你怎么测试的。至于下面的怪异问题是因为你在子类中定义 ...

上面那个问题解决。但是下面的那个问题,子类中没有定义x,但是子类中修改了x,调用父类的get_x()方法时得到的结果却是子类修改后的结果。父类中的x的值是5,然后定义子类对象并在子类中把x的值修改了成了-5,再用子类对象去调用父类的get_x()方法是得到的也是-5而不是5?
回复 使用道具 举报
顶一下贴
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马