java中成员变量、代码块、构造函数运行顺序
再load子类。
初始化子类静态代码块和成员变量
2、load完成父类与子类后,从main函数入口运行程序。先输出,接着new实例化Beetle类,则先实例化父类Insect,实例化父类时。先初始化非静态成员变量和非静态代码块,接着运行父类构造方法
再实例化子类,实例化子类时,先初始化非静态成员变量和非静态代码块,接着运行子类构造方法。
package it.xiangnan.test;
public class Beetle extends Insect {
private int k = printInit("Beetle.k initialized");
public Beetle() {
System.out.println("k=" + k);
System.out.println("j=" + j);
}
private static int x2 = printInit("static Beetle.x2 initialized");
public static void main(String[] args) {
System.out.println("Beetle constructor");
Beetle b = new Beetle();
}
}
class Insect {
private int i = 9;
protected int j;
Insect() {
System.out.println("i=" + i + ",j=" + j);
j = 39;
}
private static int x1 = printInit("static Insect.x1 intialized");
static int printInit(String s) {
System.out.println(s);
return 47;
}
}
函数从main处运行
Beetle有父类Insect。先初始化父类的静态成员变量x1,再初始化Beelte类静态成员变量x2
转而从main处运行。输出Beetle constructor,因为紧接着实例化Bettle类。该类有父类Insect,则先运行父类构造函数。在运行子类构造函数
static Insect.x1 initialized 1、父类Insect静态成员变量初始化值为47
static Beetle.x2 initialized 2、Beetle类的静态成员变量x2初始化值为47
Beetle constructor 3、输出
i=9,j=0 4、运行Beetle的父类Insect的默认构造函数
Beetle.k initialized 5、运行Beetle类的默认构造函数,输出k值之前,调用printInit方法输出该句话。并初始化k值为47
k=47 6、分别输出k、j的值
j=39
java中成员变量、代码块、构造函数运行顺序的更多相关文章
- java中的静态代码块等执行顺序
http://www.cnblogs.com/naruto469/p/3608459.html public class Print { 2 3 public Print(String s){ 4 S ...
- 2.java中c#中statc 静态调用不同之处、c#的静态构造函数和java中的构造代码块、静态代码块
1.java和c#静态成员调用的不同之处 static 表示静态的,也就是共享资源,它是在类加载的时候就创建了 java中 可以通过实例来调用,也可以通过类名.成员名来调用,但是一般最好使用类名. ...
- java中成员变量,局部变量,静态变量的辨析
转自百度:https://baijiahao.baidu.com/s?id=1625360816541592483&wfr=spider&for=pc 1.java中成员变量,局部变量 ...
- 谈谈java中成员变量与成员方法继承的问题
谈谈java中成员变量与成员方法继承的问题 关于成员变量和成员方法的的继承问题,我也可以做一个小测试,来看看结果. 首先我们先创建一个父类:
- java中静态的代码块,静态变量,静态方法
简单了解一下java虚拟机--jvm几个内存区域: 方法区:在java的虚拟机中有一块专门用来存放已经加载的类信息.常量.静态变量以及方法代码的内存区域, 常量池:常量池是方法区的一部分,主要用来存放 ...
- 5.1JAVA基础复习——JAVA中的静态代码块、构造代码块、构造函数、局部代码块区别
构造代码块: 在类中定义可以给所有对象进行初始化.局部代码块: 在方法中定义属性的生命周期.静态代码块: 在类中定义用于给类调用时属性的初始化 构造函数与构造代码块的区别: 构造函数是给对应的对象进行 ...
- Java中的构造代码块
代码块 ----a静态代码块 ----b构造代码块 ----c普通代码块 执行顺序:(优先级从高到低.)静态代码块>mian方法>构造代码块>构造方法. a.静态代码块: 静态代码块 ...
- java中的静态代码块、构造代码块、构造方法
运行下面这段代码,观察其结果: package com.test; public class HelloB extends HelloA { public HelloB() { } { System. ...
- Java中四大代码块的运行顺序(附code)
验证证的方法是写code.例如以下: public class test { static class A { public static String name = "hello" ...
随机推荐
- JSON还原为结构体
JSON还原为结构体 1)JSON字符串还原为结构体: 2)访问结构体的字段值: 本例运行效果图: uses SynCommons; const // JSON字符串 JSON1 = '{' + #1 ...
- Ant构建文件解析
<?xml version="1.0" encoding="UTF-8"?> <!-- 在Ant脚本中,project是这个XML文档的根结点 ...
- 介紹 IIS 8 全新的 HttpPlatformHandler 模組與 ASP.NET 5 Beta8 重大變更
HttpPlatformHandler 是一個支援 IIS 8 與 IIS 8.5 的原生模組 (native module),主要使用於 Microsoft Azure Websites 網站服務中 ...
- jquery hide和show方法
html 元素的显示和隐藏hide() 如果被选的元素已被显示,则隐藏该元素. show() 如果被选的元素已被隐藏,则显示该元素. <html> <head> <scr ...
- 4)linux程序设计入门--时间概念
)程序设计入门--时间概念 前言:Linux下的时间概念 这一章我们学习Linux的时间表示和计算函数 时间的表示 时间的测量 计时器的使用 .时间表示 在程序当中,我们经常要输出系统当前的时间,比如 ...
- Python操作dict时避免出现KeyError的几种方法
见原文:https://www.polarxiong.com/archives/Python-%E6%93%8D%E4%BD%9Cdict%E6%97%B6%E9%81%BF%E5%85%8D%E5% ...
- Shell编程(脚本)的经常使用命令和语句
一些经常使用的Shell编程(脚本)命令和语句,能够满足一般需求. 接收到的命令參数: 參数个数: $# 參数值: 命令本身:$0 第一个參数:$1 第二个參数:$2 -- 退出命令: exit ec ...
- android获取周围AP信息(下)
疑问: 在上一篇中,还有一个问题未解决:WifiManager的startscan() 方法是立即返回的,也就是说这个方法会调用一个扫描wifi信号的线程,那么这个扫描什么时候结束呢?我们又该什么时候 ...
- Android4.2.2 Gallery2源码分析(2)——发现Gallery.java
上文中,main.xml是我直接提出来的,并没有说明是怎么找到它的,现在说明发现它的理由: 一般我们分析界面布局会用到hierarchyviewer这个工具,从工具中,我们对应到视图,最主要的视图id ...
- CentOS7 rpm方式安装mysql5.7
内容源自:CentOS7安装mysql 在CentOS中默认安装有MariaDB,这个是MySQL的分支,但为了需要,还是要在系统中安装MySQL,而且安装完成之后可以直接覆盖掉MariaDB. 1. ...