黑马程序员技术交流社区

标题: 父类变量被隐藏 [打印本页]

作者: jix707    时间: 2013-8-13 15:01
标题: 父类变量被隐藏
class A

{

        int i,j;

        void setIJ(int i,int j)

        {

                this.i=i;

                this.j=j;

        }

        int multiply()

        {

                return i*j;

        }

}

class B extends A

{

        int i,k;

        B(int i,int k)

        {

                this.i=i;

                this.k=k;

        }

        int multiply()

        {

                return i*j*k;

        }

}

public class ABtest

{

        public static void main(String a[])

        {

                B subO=new B(6,9);

                subO.setIJ(7,8);//调用父类方法setIJ();    疑问语句

                int m=subO.multiply();

                System.out.println("m="+m);

        }

}
输出为:m=432


subO通过构造初始化,i=6   k=9
然后 subO.setIJ(7,8); 这一语句中,8被赋给了变量j . 参数7发生了什么?  因为最后的结果表明子类对象的变量i被初始化为6后,这一语句仅给j赋值了    参数7的处理细节是什么样的?


作者: 赵国刚    时间: 2013-8-13 15:08
02.<P>class A

03.{

04.        int i,j;

05.        void setIJ(int i,int j)

06.        {

07.                this.i=i;   

08.                this.j=j;

09.        }

10.        int multiply()

11.        {

12.                return i*j;

13.        }

14.}</P>

15.<P>class B extends A

16.{

17.        int i,k;

18.        B(int i,int k)

19.        {

20.                this.i=i;

21.                this.k=k;

22.        }

23.        int multiply()

24.        {

25.                return i*j*k;

26.        }

27.}</P>

28.<P>public class ABtest

29.{

30.        public static void main(String a[])

31.        {

32.                B subO=new B(6,9);

33.                subO.setIJ(7,8);//调用父类方法setIJ();    疑问语句

34.<FONT color=red>因为上面你的方法用了this关键字.你把参数传递过去.默认就赋值使用this关键字的变量.  7那个参数也用了this..所以全赋值到了父类的变量上了.</FONT>

35.                int m=subO.multiply();

36.                System.out.println("m="+m);

37.        }

38.}

39.</P>





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