大括号{}的意义与静态代码块与构造函数的加载关系
来源:互联网 发布:php 搭建企业网站 编辑:程序博客网 时间:2024/05/25 05:36
import java.util.HashMap;
import java.util.HashSet;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Map;
import java.util.TreeMap;
import java.util.TreeSet;
import javax.annotation.PostConstruct;
class T {
static {
System.out.println("1");
}
{
System.out.println("2");
}
T() {
System.out.println("父类构造");
}
public static void got(){
System.out.println("调用T类的方法,静态方法");
}
static {
System.out.println("3");
}
{
System.out.println("4");
}
}
public class Test extends T {
public Test() {
System.out.println("子类构造函数");
}
static {
System.out.println("5");
}
{
System.out.println("6");
}
public static void main(String[] args) {
Test.got();
System.out.println("=====================");*/
Test.post();
}
public void get(){
System.out.println("调用Test类的方法");
}
public static void post(){
System.out.println("调用Test类的静态方法");
}
static {
System.out.println("7");
}
{
System.out.println("8");
}
}其实在类内部{}只是代表在调用构造函数之前在{}中初始化,static{}只在类加载时调用
import java.util.HashSet;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Map;
import java.util.TreeMap;
import java.util.TreeSet;
import javax.annotation.PostConstruct;
class T {
static {
System.out.println("1");
}
{
System.out.println("2");
}
T() {
System.out.println("父类构造");
}
public static void got(){
System.out.println("调用T类的方法,静态方法");
}
static {
System.out.println("3");
}
{
System.out.println("4");
}
}
public class Test extends T {
public Test() {
System.out.println("子类构造函数");
}
static {
System.out.println("5");
}
{
System.out.println("6");
}
public static void main(String[] args) {
/* Test t = new Test();
t.get();
System.out.println("=====================");Test.got();
System.out.println("=====================");*/
Test.post();
}
public void get(){
System.out.println("调用Test类的方法");
}
public static void post(){
System.out.println("调用Test类的静态方法");
}
static {
System.out.println("7");
}
{
System.out.println("8");
}
}
new Test()时,输出 1 3 5 7 2 4 父类的构造 6 8 子类的构造
(父类静态代码块) (子类静态代码块) (父类初始代码块) (子类初始代码块)
调用Test类的内部get方法输出 1 3 5 7 2 4 父类的构造 6 8 子类的构造 调用Test类的方法
Test.got()时输出 1 3 5 7 调用T类的方法,静态方法
Test.post()时输出 1 3 5 7 调用Test类的静态方法
其实在类内部{}只是代表在调用构造函数之前在{}中初始化,static{}只在类加载时调用
new子类的对象时,先调用父类static{}里的东西,再调用子类里的static{},再调用父类{}({}为初始化代码块,在静态块后、构造方法前执行),再调用父类构造方法,再调用子类构造方法
调用子类或者父类的静态方法时,先调用父类的static{}再调用子类的static{}
阅读全文
0 0
- 大括号{}的意义与静态代码块与构造函数的加载关系
- JAVA中父类与子类静态代码块、非静态代码块、构造函数的加载顺序
- 静态代码块,构造代码块与构造方法的关系
- Java_浅谈构造函数、构造代码块与静态代码块的用法
- Java之静态代码块、构造代码块、与构造函数的用法
- 静态代码块、构造代码块与构造函数的区别
- 静态代码块、构造代码块与构造函数的调用顺序
- Java中静态代码块、非静态代码块、构造函数的执行顺序与作用
- 构造代码块与静态代码块的调用时机
- 构造函数、构造代码块与静态代码块
- 静态代码块,构造代码块与构造函数
- 构造代码块、静态代码块和构造函数的关系
- JAVA继承关系中静态代码块、非静态代码块,构造函数的执行顺序
- 静态块与构造代码块的区别
- 【26】静态代码块、构造代码块和构造函数的特点及加载顺序
- 静态代码块、构造代码块以及构造函数的加载顺序
- JAVA中静态代码块,构造代码块,构造函数的加载顺序
- 静态代码块、构造代码块以及构造函数的加载顺序
- java对引用的分类
- 输入
- 习题5.2
- 第十周项目二——二叉树算法验证
- DOM的基本概念
- 大括号{}的意义与静态代码块与构造函数的加载关系
- 关于seo写作内容的一些探讨
- HTML5新标签嵌套
- HBase之重试机制
- HTTP协议
- python核心编程第二版 读到483页小节
- Java开发必会的Linux命令
- 轻松理解:硬盘的读写原理
- Spark集群启动过程分析