黑马程序员技术交流社区

标题: 类的先后顺序 [打印本页]

作者: 赵国刚    时间: 2013-8-12 23:24
标题: 类的先后顺序

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() 先执行?? 感谢~~
作者: sergio    时间: 2013-8-13 00:41
从你的例子中可以看到。按照继承的顺序,自最顶层类向下执行,执行完了。再执行你实例化对象的顺序执行自顶向下。
作者: penpen    时间: 2013-8-13 00:43
我好像在哪本书上面见过这代码。。。
作者: gudao20080    时间: 2013-8-13 11:08
new对象时,有继承关系的话,会先加载父类的程序,然后才是子类的程序。
作者: EYE_SEE_YOU    时间: 2013-8-14 13:04
请看黑马程序员_毕向东_Java基础视频教程第06天-07-面向对象(对象的初始化过程).avi
      黑马程序员_毕向东_Java基础视频教程第06天-08-面向对象(对象调用成员过程).avi
JVM执行顺序是加载类,static代码块,static成员,构造函数代码块,构造函数,一般成员
作者: 施大勇    时间: 2013-8-17 17:32
子类要想实例化,必须先调用父类的构造 方法,子类的构造方法中第一行都隐含一个调用父类的super()方法。子类对象要初始化属性,它从父类继承而来的属性就会在父类中初始化完毕,而在本类中因为不清楚继承了哪些属性,所以在本类中是无法初始化这些属性的,  一定要在父类中完成后才可以。




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