黑马程序员技术交流社区

标题: 关于下面代码中的一些疑问 [打印本页]

作者: Huylens    时间: 2015-5-8 10:47
标题: 关于下面代码中的一些疑问
代码:
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;
        }
}


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

上面那个问题解决。但是下面的那个问题,子类中没有定义x,但是子类中修改了x,调用父类的get_x()方法时得到的结果却是子类修改后的结果。父类中的x的值是5,然后定义子类对象并在子类中把x的值修改了成了-5,再用子类对象去调用父类的get_x()方法是得到的也是-5而不是5?
作者: 横看成岭侧成锋    时间: 2015-5-8 15:15
顶一下贴




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2