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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© jix707 初级黑马   /  2013-8-13 15:01  /  839 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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的处理细节是什么样的?

1 个回复

倒序浏览
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>
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马