黑马程序员技术交流社区

标题: 你能一眼看出结果吗? [打印本页]

作者: 明日辉煌    时间: 2014-6-4 17:45
标题: 你能一眼看出结果吗?
class test_parent
{
        int x = 5;
        int y = 10;
        void set_value(int a, int b)
        {
                x = a;
                y = b;
        }
        int get_1()
        {
                return this.x + this.y;
        }
        int get_2()
        {
                return x - y;
        }
}

class test_4 extends test_parent
{
        int y;
        test_4(int a)
        {
                y = a;
        }
        void set_value(int a, int b)
        {
                x = a;
                y = b;
        }
        int get_2()
        {
                return y;
        }
}

class  Test2
{
        public static void main(String[] args)
        {
               

                 test_4  a1=new test_4(-1) ;
                 a1.set_value(5,5);
                 int x = a1.get_2();
                System.out.println("x="+x);
                test_4  a2=new test_4(1);
                int z= a2.get_1();
                System.out.println("z="+z);
        }
}你能一眼看出结果吗?


作者: 马宁    时间: 2014-6-4 19:45
5
15
算的  
作者: 饥渴ing    时间: 2014-6-4 22:39
当子类遮盖了父类字段时可以使用super.xxx实现调用父类的字段.
上面的程序没用使用super关键字所以操作的一直是子类本身的字段
所以结果为
x=5
z=15
作者: 茂子    时间: 2014-6-5 08:44
5和15.
第一个直接调用子类的.get_2()方法,返回子类y,相当于取值走的是就近原则;
第二个调用的是父类get_1()方法,因为返回值两个相加变量前加了this,表示本类变量或者方法,所以直接返回父类中x和y的和。
作者: 明日辉煌    时间: 2014-6-6 14:41
茂子 发表于 2014-6-5 08:44
5和15.
第一个直接调用子类的.get_2()方法,返回子类y,相当于取值走的是就近原则;
第二个调用的是父类get ...

nice,赞一个!
作者: Autumn    时间: 2014-6-6 15:10
5 15不多说
作者: 小熊星座    时间: 2014-6-6 20:45
一眼看不出,需要看两眼。x=5   z=15




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