1,子类的实例化

  1,子父类中的构造函数的特点。

  在子类构造对象时,发现,访问子类构造函数时,父类也运行了。
  为什么呢?
  原因是:在子类的构造函数中第一行有一个默认的隐式语句。 super();

  子类的实例化过程:子类中所有的构造函数默认都会访问父类中的空参数的构造函数。
   
  为什么子类实例化的时候要访问父类中的构造函数呢?
  那是因为子类继承了父类,获取到了父类中内容(属性),所以在使用父类内容之前,
  要先看父类是如何对自己的内容进行初始化的。

  所以子类在构造对象时,必须访问父类中的构造函数。
  为什么完成这个必须的动作,就在子类的构造函数中加入了super()语句。

  如果父类中没有定义空参数构造函数,那么子类的构造函数必须用super明确要调用
  父类中哪个构造函数。同时子类构造函数中如果使用this调用了本类构造函数时,
  那么super就没有了,因为super和this都只能定义第一行。所以只能有一个。
  但是可以保证的是,子类中肯定会有其他的构造函数访问父类的构造函数。

  注意:supre语句必须要定义在子类构造函数的第一行。因为父类的初始化动作要先完成。

    1,子类构造时会通过super()方法先构造父类(子类的所有构造函数都会访问父类中空参数的构造函数,如果父类中没有空参构造函数,在子类重要添加super()在    子类  的构造第一行)。

    2,构造函数不存在继承和覆盖

  

  

  

  2,一个对象实例化过程:
  Person p = new Person();
  1,JVM会读取指定的路径下的Person.class文件,并加载进内存,
      并会先加载Person的父类(如果有直接的父类的情况下).
  2,在堆内存中的开辟空间,分配地址。
  3,并在对象空间中,对对象中的属性进行默认初始化。
  4,调用对应的构造函数进行初始化。
  5,在构造函数中,第一行会先到调用父类中构造函数进行初始化。
  6,父类初始化完毕后,在对子类的属性进行显示初始化。
  7,在进行子类构造函数的特定初始化。
  8,初始化完毕后,将地址值赋值给引用变量.

2,代码块初始化过程

java 子类的实例化和代码块初始化过程的更多相关文章

  1. java类成员变量与代码块初始化

    首先根据下面的这个一段代码:引入关于java初始化顺序的问题public class InitationTest extends Person { public InitationTest() { S ...

  2. Java 中静态代码块初始化问题测试

    Java 中静态代码块初始化问题测试 原创 情况一:变量是 static final 修饰的"编译期常量",如 public static final String a = &qu ...

  3. java中静态代码块初始化顺序

    (一)java 静态代码块 静态方法区别    一般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的;需要在项目启动的时候就初始化,在不创建对象的情况下, ...

  4. java 对象初始化和代码块初始化顺序

    class A { public A(){ System.out.println("测试!!!!!!!!!!!"); } } class Demo19 extends A { { ...

  5. JAVA程序执行顺序(静态代码块》非静态代码块》静态方法》构造函数)

    总结:静态代码块总是最先执行. 非静态代码块跟非静态方法一样,跟对象有关.只不过非静态代码块在构造函数之前执行. 父类非静态代码块.构造函数执行完毕后(相当于父类对象初始化完成), 才开始执行子类的非 ...

  6. 子类A继承父类B, A a = new A(); 则父类B构造函数、父类B静态代码块、父类B非静态代码块、子类A构造函数、子类A静态代码块、子类A非静态代码块 执行的先后顺序是

    按照先后顺序: 1,静态先于非静态代码库执行(静态代码块随着类的加载而加载,初始化只执行一次) 2,父类先于子类 3,非静态代码块优于构造函数执行 所以执行顺序如下: 父类B静态代码块->子类A ...

  7. Java子父类间静态代码块、非静态代码块、构造方法的执行顺序

    子类A继承父类B,A a=new A(); 正确的执行顺序是:父类B静态代码块->子类A静态代码块->父类B非静态代码块->父类B构造函数->子类A非静态代码块->子类A ...

  8. 0037 Java学习笔记-多线程-同步代码块、同步方法、同步锁

    什么是同步 在上一篇0036 Java学习笔记-多线程-创建线程的三种方式示例代码中,实现Runnable创建多条线程,输出中的结果中会有错误,比如一张票卖了两次,有的票没卖的情况,因为线程对象被多条 ...

  9. java基础课程笔记 static 主函数 静态工具类 classpath java文档注释 静态代码块 对象初始化过程 设计模式 继承 子父类中的函数 继承中的构造函数 对象转型 多态 封装 抽象类 final 接口 包 jar包

    Static那些事儿 Static关键字 被static修饰的变量成为静态变量(类变量) 作用:是一个修饰符,用于修饰成员(成员变量,成员方法) 1.被static修饰后的成员变量只有一份 2.当成员 ...

随机推荐

  1. Android下实现GPS定位服务

    1.申请Google API Key,参考前面文章 2.实现GPS的功能需要使用模拟器进行经纬度的模拟设置,请参考前一篇文章进行设置 3.创建一个Build Target为Google APIs的项目 ...

  2. android131 360 02 设置中心

    // 判断是否需要自动更新 boolean autoUpdate = mPref.getBoolean("auto_update", true); if (autoUpdate) ...

  3. mysql distinct跟group by性能

    mysql distinct和group by性能   1,测试前的准备 //准备一张测试表 mysql> CREATE TABLE `test_test` ( ->   `id` int ...

  4. jQuery执行请求demo

    Ajax教程地址 4.3.2 执行GET请求 使用jQuery来执行GET请求有多种可选的方法.最简单的方法是使用$.get(),其参数是一个URL和一个回调函数:该回调函数有两个参数:一个是从服务器 ...

  5. Fixflow引擎解析(五)(内核) - 基于Token驱动的引擎内核运转原理

    Fixflow内核运转图v1.0(beta) 未完待续.........

  6. Bootstrap的Affix与ScrollSpy用法 bootstrap-scrollspy && bootstrap-dropdown

    bootstrap-scrollspy && bootstrap-dropdown Bootstrap的Affix与ScrollSpy用法 http://9iphp.com/web/j ...

  7. chosen 下拉框

    $("#teams").trigger("liszt:updated");//更新重新绑定                            $(" ...

  8. 当 tcpdump -w 遇到 Permission denied

    为了定位问题,需要在Linux上使用tcpdump并且保存到文件,遇到了如下问题: tcpdump port 9001 -w xxtcpdump: xx: Permission denied 因为已经 ...

  9. kali linux 2.0 折腾笔记

    1. 配置SSH远程登录 root@kali:~# vi /etc/ssh/sshd_config #PermitRootLogin without-password PermitRootLogin ...

  10. [关于SQL]查询成绩都大于80分的学生

    1.用一条SQL语句 查询出每门课都大于80分的学生姓名name kecheng fenshu张三 语文 81张三 数学 75李四 语文 76李四 数学 90王五 语文 81王五 数学 100王五 英 ...