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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 赵国刚 中级黑马   /  2013-8-12 23:24  /  1759 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


01.class Meal{

02.        Meal() {

03.                System.out.println("Meal()");

04.        }

05.}

06.

07.class Bread{

08.        Bread(){

09.                System.out.println("Bread()");

10.        }

11.}

12.

13.class Cheese{

14.        Cheese() {

15.                System.out.println("cheese()");

16.        }

17.}

18.

19.class Lettuce{

20.        Lettuce() {

21.                System.out.println("Lettuce()");

22.        }

23.}

24.

25.class Lunch extends Meal{

26.        public Lunch() {

27.                System.out.println("Lunch()");

28.        }

29.}

30.

31.class PortableLunch extends Lunch{

32.        public PortableLunch() {

33.                System.out.println("portabkeLunch()");

34.        }

35.}

36.

37.public class SandWich extends PortableLunch {

38.        private Bread m =new Bread();

39.        private Cheese s = new Cheese();

40.        private Lettuce l = new Lettuce();

41.        

42.        SandWich(){

43.                System.out.println("sandwich()");

44.        }

45.

46.        public static void main(String[] args) {

47.                new SandWich();

48.

49.        }

50.

51.}

52.
复制代码输出结果:
Meal()
Lunch()
portabkeLunch()
Bread()
cheese()
Lettuce()
sandwich()
为什么Bread() cheese() Lettuce() 会比sandwich() 先执行?? 感谢~~

5 个回复

倒序浏览
从你的例子中可以看到。按照继承的顺序,自最顶层类向下执行,执行完了。再执行你实例化对象的顺序执行自顶向下。
回复 使用道具 举报
我好像在哪本书上面见过这代码。。。
回复 使用道具 举报
new对象时,有继承关系的话,会先加载父类的程序,然后才是子类的程序。
回复 使用道具 举报
请看黑马程序员_毕向东_Java基础视频教程第06天-07-面向对象(对象的初始化过程).avi
      黑马程序员_毕向东_Java基础视频教程第06天-08-面向对象(对象调用成员过程).avi
JVM执行顺序是加载类,static代码块,static成员,构造函数代码块,构造函数,一般成员
回复 使用道具 举报
子类要想实例化,必须先调用父类的构造 方法,子类的构造方法中第一行都隐含一个调用父类的super()方法。子类对象要初始化属性,它从父类继承而来的属性就会在父类中初始化完毕,而在本类中因为不清楚继承了哪些属性,所以在本类中是无法初始化这些属性的,  一定要在父类中完成后才可以。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马