Android-Java构造代码块&构造方法隐式三行

宝剑锋从磨砺出,梅花香自苦寒来。这篇文章主要讲述Android-Java构造代码块& 构造方法隐式三行相关的知识,希望能为你提供帮助。
构造代码块:
描述Teacher对象/实体:

package android.java.oop06; public class Teacher {private int id = 007; private String name = "零零发"; private int age = 98; private float height = 1.78F; /** * 静态代码块:当前Teacher类,被加载进内存时 就会执行此静态代码块里面的主体{} * 可以说是最先执行的,可以在这里做一些静态成员的初始化工作 */ static { System.out.println("静态代码块:当前Teacher类,被加载进内存时 就会执行此静态代码块里面的主体{}"); System.out.println(""); }/** * 构造代码块:每一个构造函数,的第三行执行者 就是构造代码块; * 构造代码块可以给成员变量字段进行初始化工作等; */ { System.out.println("构造代码块 被所有构造方法的第三行执行者 执行了..."); showAllValue(); }/** * 构造函数是专门给对象实例化用的: *new Teacher(); ---> public Teacher(){} *... * * 就算不写构造函数 也会默认有一个无参构造函数; * 一旦写了 无参构造函数/有参构造函数 后 默认隐式的那个构造函数就不见了 */ public Teacher() { System.out.println("无参构造函数,我被new Teacher()实例化了"); showAllValue(); return; // 此方法默认就有这样一句return; 隐式的,是可以让方法弹栈/结束; }/** * 构造函数是专门给对象实例化用的: *new Student(9); ---> public Student(int value){} *... * * 就算不写构造函数 也会默认有一个无参构造函数; * 一旦写了 无参构造函数/有参构造函数 后 默认隐式的那个构造函数就不见了 */ public Teacher(int value) { System.out.println("有参构造函数,我被new Teacher(int类型的值)实例化了 value:" + value); showAllValue(); return; // 此方法默认就有这样一句return; 隐式的,是可以让方法弹栈/结束; }/** * 构造函数是专门给对象实例化用的: *new Student("刘俊", true); ---> public Student(String value1, boolean value2){} *... * * 就算不写构造函数 也会默认有一个无参构造函数; * 一旦写了 无参构造函数/有参构造函数 后 默认隐式的那个构造函数就不见了 */ public Teacher(String name, boolean isSuccess) { System.out.println("无参构造函数,我被new Student(String类型的值, boolean类型的值)实例化了 name:" + name + " isSuccess:" + isSuccess); showAllValue(); return; // 此方法默认就有这样一句return; 隐式的,是可以让方法弹栈/结束; }// 打印所有的成员变量值 private void showAllValue() { System.out.println("id:" + id + "\\nname:" + name + "\\nage:" + age + "\\nheight:" + height + "\\n"); return; // 此方法默认就有这样一句return; 隐式的,是可以让方法弹栈/结束; } }

 
main测试方法:
package android.java.oop06; public class Demo01 {public static void main(String[] args) {// new Teacher(); ---> public Teacher(){} Teacher teacher1 = new Teacher(); // new Student(9); ---> public Student(int value){} Teacher teacher2 = new Teacher(9988); // new Student("刘俊", true); ---> public Student(String value1, boolean value2){} Teacher teacher3 = new Teacher("毛对皮", true); }}

 
执行结果:分析打印执行的结果中,每次调用构造方法,构造方法都会,先调用构造代码块,这是为什么呢,等结束完(构造方法隐式三行)就明白了;
Android-Java构造代码块&构造方法隐式三行

文章图片

 
 
 
【Android-Java构造代码块& 构造方法隐式三行】 
 
 
构造方法隐式三行
1.分析打印执行的结果中,每次调用构造方法,构造方法都会,先调用构造代码块,这是为什么呢?;
解释:因为在所有构造方法中,【第三行】隐式的 会调用构造代码块;
2.为什么构造代码块中打印的成员变量是有值得呢?
解释:因为【第二行】给所有成员变量赋值了,所以构造代码块可以打印成员变量的值;
3.为什么构造方法中打印的成员变量是有值得呢?
解释:因为【第二行】给所有成员变量赋值了,所以构造方法可以打印成员变量的值;
package android.java.oop06.teacher; public class Teacher {private int id = 007; private String name = "零零发"; private int age = 98; private float height = 1.78F; /** * 构造代码块:每一个构造函数,的第三行执行者 就是构造代码块; * 构造代码块可以给成员变量字段进行初始化工作等; */ { System.out.println("构造代码块 被所有构造方法的第三行执行者 执行了..."); showAllValue(); }/** * 每一个构造函数/所有构造函数都是这样的 * 就以此构造函数为例:来介绍隐式 第一行 第二行 第三行 执行操作 *隐式的第一行、第二行、第三行、执行操作是默认执行的,是看不到的 隐式的 */ public Teacher() { // 【第一行】super(); 调用父类的 无参构造方法 /** * 【第二行】 *给所有成员属性赋值 例如:一开始这些成员变量的值是id=0 name=null age=0 *就是执行了【第二行】才会去执行--> 给id=赋值为007name=赋值为="零零发" age=98) */ // 【第三行】调用--> (构造代码块)System.out.println("无参构造函数,我被new Teacher()实例化了"); showAllValue(); return; // 此方法默认就有这样一句return; 隐式的,是可以让方法弹栈/结束; }/** * 每一个构造函数/所有构造函数都是这样的 * 就以此构造函数为例:来介绍隐式 第一行 第二行 第三行 执行操作 *隐式的第一行、第二行、第三行、执行操作是默认执行的,是看不到的 隐式的 * @param value */ public Teacher(int value) { // 【第一行】super(); 调用父类的 无参构造方法 /** * 【第二行】 *给所有成员属性赋值 例如:一开始这些成员变量的值是id=0 name=null age=0 *就是执行了【第二行】才会去执行--> 给id=赋值为007name=赋值为="零零发" age=98) */ // 【第三行】调用--> (构造代码块)System.out.println("有参构造函数,我被new Teacher(int类型的值)实例化了 value:" + value); showAllValue(); return; // 此方法默认就有这样一句return; 隐式的,是可以让方法弹栈/结束; }/** * 每一个构造函数/所有构造函数都是这样的 * 就以此构造函数为例:来介绍隐式 第一行 第二行 第三行 执行操作 *隐式的第一行、第二行、第三行、执行操作是默认执行的,是看不到的 隐式的 * @param name * @param isSuccess */ public Teacher(String name, boolean isSuccess) { // 【第一行】super(); 调用父类的 无参构造方法 /** * 【第二行】 *给所有成员属性赋值 例如:一开始这些成员变量的值是id=0 name=null age=0 *就是执行了【第二行】才会去执行--> 给id=赋值为007name=赋值为="零零发" age=98) */ // 【第三行】调用--> (构造代码块)System.out.println("无参构造函数,我被new Student(String类型的值, boolean类型的值)实例化了 name:" + name + " isSuccess:" + isSuccess); showAllValue(); return; // 此方法默认就有这样一句return; 隐式的,是可以让方法弹栈/结束; }// 打印所有的成员变量值 private void showAllValue() { System.out.println("id:" + id + "\\nname:" + name + "\\nage:" + age + "\\nheight:" + height + "\\n"); return; // 此方法默认就有这样一句return; 隐式的,是可以让方法弹栈/结束; } }

 
 
 
 

    推荐阅读