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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 明日辉煌 中级黑马   /  2014-6-4 17:45  /  1264 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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);
        }
}你能一眼看出结果吗?

6 个回复

倒序浏览
5
15
算的  
回复 使用道具 举报
当子类遮盖了父类字段时可以使用super.xxx实现调用父类的字段.
上面的程序没用使用super关键字所以操作的一直是子类本身的字段
所以结果为
x=5
z=15
回复 使用道具 举报
5和15.
第一个直接调用子类的.get_2()方法,返回子类y,相当于取值走的是就近原则;
第二个调用的是父类get_1()方法,因为返回值两个相加变量前加了this,表示本类变量或者方法,所以直接返回父类中x和y的和。
回复 使用道具 举报
茂子 发表于 2014-6-5 08:44
5和15.
第一个直接调用子类的.get_2()方法,返回子类y,相当于取值走的是就近原则;
第二个调用的是父类get ...

nice,赞一个!
回复 使用道具 举报
5 15不多说
回复 使用道具 举报
一眼看不出,需要看两眼。x=5   z=15
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马