在代码中有类之间有继承关系,父类子类中均有成员变量、普通代码块、静态代码块以及构造方法,那么他们的执行顺序怎么样呢,写了两个类来判断下。
父类:Animal
package com.extends03; public class Animal { public String name = "animal1"; public int age; public static String color = "white"; //构造方法 public Animal() { name = "animal2"; System.out.println("create Animal..." + name); //先执行成员变量,再执行普通代码块,最后执行构造方法 //System.out.println(color); } //普通代码块 { name = "animal3"; System.out.println("Animal Class codeBlock"); } //静态代码块 static { color = "red"; System.out.println("Animal Class static codeBlock " + "经过静态代码块修改静态值:" + color); } public void eat() { System.out.println("Animal eat..."); } }
子类:Lion
package com.extends03; public class Lion extends Animal { public static String name = "big Lion"; public Lion() { System.out.println("create Lion..."); } public String color = "yellow"; { name = "little lion "; color = "white"; System.out.println(name); System.out.println(color);//先执行本类的成员变量,再执行本类普通代码块 System.out.println("Lion Class codeBlock"); } static { name = "super Lion"; System.out.println("Lion Calss static codeBlock "+ "经过静态代码块修改静态值:" + name); } }
测试类:
public class TestExtends { public static void main(String[] args) { Lion l = new Lion(); System.out.println("验证静态块是否是只被加载一次"); Animal a = new Animal(); } }
输出结果:
Animal Class static codeBlock 经过静态代码块修改静态值:red //1、父类静态代码块,同时说明静态变量先初始化,然后再执行静态代码块 Lion Calss static codeBlock 经过静态代码块修改静态值:super Lion //2、子类静态代码块,同时说明静态变量先初始化,然后再执行静态代码块// Animal Class codeBlock //3、父类普通代码块 create Animal...animal2 //4、父类构造方法 little lion white Lion Class codeBlock //5、子类代码块 create Lion... //6、子类构造方法 验证静态块是否是只被加载一次 //以下结果说明静态代码只在类第一次加载时执行 Animal Class codeBlock create Animal...animal2
相关推荐
java 静态_非静态 字段_方法_代码块 子类父类构造_初始化顺序! 三个class 让你清清楚楚 第一个class java代码如下: package initialOrder; class Parent { // 静态变量 public static String p_StaticField...
在子类对象被实例化的过程中,变量、构造方法以及代码块三者的先后顺序为: 1. 父类的静态变量和静态代码块,按代码先后顺序执行 2. 子类的静态变量和静态代码块,按代码先后顺序执行 3. 父类的成员变量和普通...
deriveClass.java 子类访问父类变量示例 getLinePara.java 获取命令行参数示例 hasStaticMethod.java 静态成员方法示例 hasStatMember.java 静态成员变量示例 HelloNative.c 用C写的一个小程序 HelloNative....
在类体中定义的数据、变量和方法称为类的成员, 或称为实例变量和实例方法。 (7) 例如: 下例定义了一个 Point 类 ,并且声明了它的两个变量 x、y 坐标 ,同时实现 init()方法 对 x、y 赋初值 。 class Ponit { int...
面向对象 一种编程思想: 类:是对有具有共同特征和行为的综合。对象是类的具体实现 类的定义: public class 类名{ //类名首字母大写 ,大驼峰命名 ... 修饰代码块 final: 修饰属性 修饰方法 修饰类
第4章 Java中的程序执行流程 67 教学视频:1小时57分钟 4.1 顺序执行 67 4.2 使用if-else让程序懂得判断 68 4.2.1 if语句 68 4.2.2 if语句的嵌套 71 4.2.3 if-else语句 73 4.2.4 if-else语句嵌套 75 4.3 ...
第4章 Java中的程序执行流程 67 教学视频:1小时57分钟 4.1 顺序执行 67 4.2 使用if-else让程序懂得判断 68 4.2.1 if语句 68 4.2.2 if语句的嵌套 71 4.2.3 if-else语句 73 4.2.4 if-else语句嵌套 75 4.3 ...
重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,...
学生提问:既然内部类是外部类的成员,是否可以为外部类定义子类,在子类中再定义一个内部类来重写其父类中的内部类? 211 6.7.4 局部内部类 211 6.7.5 匿名内部类 212 6.7.6 闭包(Closure)和回调 215 6.8 ...
静态变量显式赋值代码以及静态代码块的执行顺序,由它们的先后顺序执行,先声明的先执行 ()方法只会执行一次 如以下代码: //静态变量显式赋值代码 private static int j=method(); //静态代码块 static { System....
重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,...
70、TreeSet里面放对象,如果同时放入了父类和子类的实例对象,那比较时使用的是父类的compareTo方法,还是使用的子类的compareTo方法,还是抛异常! 48 71、说出一些常用的类,包,接口,请各举5个 49 72、java中有...
3.7.3静态代码块136 3.7.4再论静态成员变量137 3.8main()方法和命令行参数139 3.9结束方法141 3.10本地方法141 3.11本章小结144 第4章继承与多态145 4.1继承的基本原理145 4.2子类对父类的继承146 4.3属性...
70、TreeSet里面放对象,如果同时放入了父类和子类的实例对象,那比较时使用的是父类的compareTo方法,还是使用的子类的compareTo方法,还是抛异常! 48 71、说出一些常用的类,包,接口,请各举5个 49 72、java中有...
70、TreeSet里面放对象,如果同时放入了父类和子类的实例对象,那比较时使用的是父类的compareTo方法,还是使用的子类的compareTo方法,还是抛异常! 48 71、说出一些常用的类,包,接口,请各举5个 49 72、java中有...
C) 子类继承父类,如果父类中只有一个构造方法并且有参数,那么在子类的构造方法中必须先用super调用父类构造方法并传参。 D) 以上说法都不正确。 题目11:d 程序如下: class Test { private int day; public int...
70、TreeSet里面放对象,如果同时放入了父类和子类的实例对象,那比较时使用的是父类的compareTo方法,还是使用的子类的compareTo方法,还是抛异常! 48 71、说出一些常用的类,包,接口,请各举5个 49 72、java中有...