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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Aron 中级黑马   /  2014-6-22 18:54  /  1811 人查看  /  13 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 Aron 于 2014-6-24 18:05 编辑
  1. public class Test extends A {

  2.         Test(){
  3.                 super();
  4.                 System.out.println("test");
  5.         }
  6.         {
  7.                 System.out.println("xixi");
  8.         }
  9.          public static void main(String[] args){
  10.                  A t = new Test();
  11.         }
  12. }

  13. class A{
  14.         A(){
  15.                 System.out.println("AA");
  16.         }
  17. }
复制代码
  1. 结果为:
  2. AA
  3. xixi
  4. test
复制代码
首先先说明我知道父类对象的一个引用指向子类对象会先访问父类 这个是由于子类构造方法中有一句隐式的super()语句
我想问的是构造代码块按理说不是会先于构造方法执行 但是确在访问父类super()后才执行 也就是说实际上是在super()访问父类过后才会去执行构造代码块 然后再执行构造方法中下面的语句
也就是执行顺序是(对于我写的程序来讲的执行顺序):新建对象访问test()构造方法然后执行super(),访问父类后在回来查找构造代码块如果有执行它,之后在执行super下面的语句
对不对
希望大家不要说什么父类 与 子类中这样那样的执行顺序 我都明白 我只是想确认我这个想法对不对
说明下你们的解释  谢谢了



评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

13 个回复

倒序浏览
对的,,,,,你知道为什么要先执行super么?
回复 使用道具 举报
继承就是先父后子的
执行顺序就是这样
父类--变量
父类--初始化块
父类--构造函数
子类--变量
子类--初始化块
子类--构造函数

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报
静态代码块
随着类的加载而执行,只执行一次,并优先于主函数,也优先于构造代码块。用于给类进行初始化。

构造函数
构造函数是在对象一建立就运行,给对象进行初始化。

构造代码块
构造代码块是在对象一建立就运行,而且优先于构造函数执行,用来定义不同对象共性的初始化内容。

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报
构造代码块比构造方法先执行,是在同一个类里来说的。如果你在父类里再加上一个构造代码块的话第一个执行的就是父类的构造代码块,然后是父类的构造方法,接着是子类的构造代码块,再接着是子类的构造方法.

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报
18353666072 发表于 2014-6-22 19:14
对的,,,,,你知道为什么要先执行super么?

不知道额  为什么啊?
回复 使用道具 举报
围观中1
回复 使用道具 举报
郑飞 高级黑马 2014-6-23 13:40:00
8#
构造代码块不就是先与构造方法的么? 我记错了还是? 也求指教..
回复 使用道具 举报
Aron 发表于 2014-6-23 11:10
不知道额  为什么啊?

因为A可能也有父类,A要操作数据前必须先看一下A的父类对数据做了什么操作,,,,
回复 使用道具 举报
Aron 中级黑马 2014-6-24 18:05:55
10#
18353666072 发表于 2014-6-24 10:58
因为A可能也有父类,A要操作数据前必须先看一下A的父类对数据做了什么操作,,,, ...

soga  谢谢啦
回复 使用道具 举报

{:3_67:},,,,,
回复 使用道具 举报
应该是必须首先建立父类,要不然没有父亲怎么能有儿子
回复 使用道具 举报
学习了,,,,
回复 使用道具 举报
看来可以看做是实例化一个子类对象之前会先实例化一个父类对象。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马