java父类和子类初始化顺序的深入理解
继承类的构建过程是向外扩散的,子类初始化了,父类一定也初始化了
代码如下:
class Art{
Art(){
System.out.println("Art");
}
}
class Drawing extends Art{
Drawing(){
System.out.println("Drawing");
}
}
public class Cartoon extends Drawing {
Cartoon(){
System.out.println("Cartoon");
}
public static void main(String[] args) {
Art cartoon = new Cartoon();
}
}
Art
Drawing
Cartoon
相关推荐
-
Java编程子类能否重写父类的静态方法探索
今天突然讨论到了子类继承父类的静态方法问题,有人坚持说能写,有人说不能重写,那到底能不能冲写呢?这个问题很简单,测试一下就完了. 先是父类代码: public class Fu { public static void show() { System.out.println("父类的静态方法"); } public void method() { System.out.println("父类的一般方法"); } } 下面是子类代码: public class Zi
-
浅谈Java中父类与子类的加载顺序详解
复制代码 代码如下: class Parent { // 静态变量 public static String p_StaticField = "父类--静态变量"; // 变量(其实这用对象更好能体同这一点,如专门写一个类的实例) //如果这个变量放在初始化块的后面,是会报错的,因为你根本没有被初始化 public String p_Field = "父类--变量"; // 静态初始化块 static { S
-
java中子类继承父类,程序运行顺序的深入分析
我们经常在项目中使用继承,但是往往不太明白,程序运行的顺序以及原理,尤其是使用上转型对象的时候,以及父类子类中都有static变量和方法时,不知道先运行谁.我也是写了一个例子.总结了一下. 复制代码 代码如下: 父类:public class TestStatic { public static String name="china"; { System.out.println("========方法体========"); } static{
-
Java中子类调用父类构造方法的问题分析
在Java中,子类的构造过程中,必须调用其父类的构造函数,是因为有继承关系存在时,子类要把父类的内容继承下来,通过什么手段做到的? 答案如下: 当你new一个子类对象的时候,必须首先要new一个父类的对像出来,这个父类对象位于子类对象的内部,所以说,子类对象比父类对象大,子类对象里面包含了一个父类的对象,这是内存中真实的情况.构造方法是new一个对象的时候,必须要调的方法,这是规定,要new父类对象出来,那么肯定要调用其构造方法,所以: 第一个规则:子类的构造过程中,必须调用其父类的构造方
-
java父类和子类初始化顺序的深入理解
继承类的构建过程是向外扩散的,子类初始化了,父类一定也初始化了 复制代码 代码如下: class Art{ Art(){ System.out.println("Art"); }}class Drawing extends Art{ Drawing(){ System.out.println("Drawing"); }}public class Cartoon extends Drawing { Cartoon(){ System.out.println(&q
-
图文详解Java中class的初始化顺序
class的装载 在讲class的初始化之前,我们来讲解下class的装载顺序. 以下摘自<Thinking in Java 4> 由于Java 中的一切东西都是对象,所以许多活动 变得更加简单,这个问题便是其中的一例.正如下一章会讲到的那样,每个对象的代码都存在于独立的文件中.除非真的需要代码,否则那个文件是不会载入的.通常,我们可认为除非那个类的一个对象构造完毕,否则代码不会真的载入.由于static 方法存在一些细微的歧义,所以也能认为"类代码在首次使用的时候载入".
-
java类中元素初始化顺序详解
复制代码 代码如下: public class Test4 { @Test public void test(){ child child = new child(); }} class parent{ public static String parentStaticField = "父类静态变量"; public String parentNormalField ="父类普通变量"; static {
-
Java中对象初始化顺序的详细介绍
前言 在Java中,一个对象在可以被使用之前必须要被正确地初始化,这一点是Java规范规定的.最近我发现了一个有趣的问题,这个问题的答案乍一看下骗过了我的眼睛.看一下这三个类: package com.ds.test; public class Upper { String upperString; public Upper() { Initializer.initialize(this); } } package com.ds.test; public class Lower extends
-
Java类继承关系中的初始化顺序实例详解
本文实例讲述了Java类继承关系中的初始化顺序.分享给大家供大家参考,具体如下: Java类初始化的顺序经常让人犯迷糊,现在本文尝试着从JVM的角度,对Java非继承和继承关系中类的初始化顺序进行试验,尝试给出JVM角度的解释. 非继承关系中的初始化顺序 对于非继承关系,主类InitialOrderWithoutExtend中包含了静态成员变量(类变量)SampleClass 类的一个实例,普通成员变量SampleClass 类的2个实例(在程序中的顺序不一样)以及一个静态代码块,其中静态代码块
-
简单了解Java类成员初始化顺序
这篇文章主要介绍了简单了解Java类成员初始化顺序,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 类中包含7中成员: 1.静态变量 static 2.final静态常量 final static 3.静态代码块 static{} //多个代码块顺序执行 4.普通变量 5.普通代码块 {} //多个代码块顺序执行 6.构造方法 7.普通方法 类中成员初始化方式(排出7): 非继承类中: 首先执行1/2/3,执行顺序为顺序执行(谁在前先执行谁).
-
Java 程序初始化顺序
Java程序的初始化一般遵循三个原则(优先级依次递减): 1,静态对象(变量)优先于非静态对象(变量)初始化,其中,静态对象(变量)只初始化一次,而非静态对象(变量)可能会初始化很多次. 2,父类优先于子类进行初始化. 3,按照成员变量的定义顺序进行初始化.即使变量定义散布于方法定义之中,它们依然在任何方法被调用之前先初始化. Java程序初始化工作可以在许多不同的代码块中完成(例如静态代码块,构造函数等),它们的执行顺序如下: 父类静态变量 父类静态代码块 子类静态变量 子类静态代码块 父类非
-
浅谈Java变量的初始化顺序详解
规则1(无继承情况下):对于静态变量.静态初始化块.变量.初始化块.构造器,它们的初始化顺序依次是(静态变量.静态初始化块)>(变量.初始化块)>构造器证明代码: 复制代码 代码如下: public class InitialOrderTest { // 静态变量 public static String staticField = "静态变量"; // 变量 public String field = "变量"; // 静
-
Java对象初始化顺序的使用
单一类:(静态成员变量&静态初始化块)<(成员变量&初始化块)<构造函数 复制代码 代码如下: public class 对象初始化顺序 { public static void main(String[] args){ Person p = new Person(); }}class Person{ public static String staticfield ="静态成员变量"; public String fi
随机推荐
- AutoRun.wp(gg.exe)U盘木马清除方法
- .NET微信公众号开发之准备工作
- php文件操作小结(删除指定文件/获取文件夹下的文件名/读取文件夹下图片名)
- 判断是否为指定长度内字符串的php函数
- android实现图片反转效果
- 如何使用python爬取csdn博客访问量
- php出现Cannot modify header information问题的解决方法大全
- 关于Javascript 的 prototype问题。
- 基于jquery实现下拉框美化特效
- bootstrap快速制作后台界面
- VBS教程:方法-OpenAsTextStream 方法
- PHP生成RSS文件类实例
- JS中confirm,alert,prompt函数区别分析
- C++文件依存关系介绍
- java 防盗链详解及解决办法
- 深入剖析浏览器退出之后php还会继续执行么
- Android编程实现在Bitmap上涂鸦效果
- Inline Hook(ring3)的简单C++实现方法
- .NET开发实现一个微信跳一跳的辅助程序
- vue防止花括号{{}}闪烁v-text和v-html、v-cloak用法示例