this super 构造函数 以及 加载及调用顺序
来源:互联网 发布:淘宝退货运费 编辑:程序博客网 时间:2024/06/03 17:35
第一个:this super构造函数:
今天一同事问我,他写的一段代码为什么编译报错,代码大体构造如下:
package testRun;public class TestSuper { public static void main(String[] args) { System.out.println(new Programmer("小米", 50, "java")); }}class Person { String name; int age;// Person(){} Person(String name, int age) { this.name = name; this.age = age; } public String toString() { return "Name: " + name + "\nAge: " + age; }}class Programmer extends Person { String language; Programmer(String name, int age, String language) {// super(name, age); this.name = name; this.age = age; this.language = language; } public String toString() { return super.toString() + "\nLanguage: " + language; }}
编译会报错愿意如下:
当一个没有构造函数时,系统会默认该类有一个没有参数的构造函数;如果一个类写了构造函数,那么系统就不会给该类在添加默认的构造函数。
当一个子类调用自己的构造函数是,在它的构造韩式开始会默认调用父类的构造函数;如果没有用super(参数…)进行明显的调用父类的构造函数,那么它会默认调用super()父类默认的构造函数(所以父类如果重写了带参数的构造函数,那么也必须要写一个不带参数的构造函数)。
第二:加载基调用顺序:
package test;class Tree { static { System.out.println("静态块。"); // 1 staticColor = "Red"; } public static String staticColor = getStaticColor(); public String instanceColor = getInstanceColor(); { System.out.println("实例块。"); // 2 instanceColor = "Brown"; } public Tree() { System.out.println("构造方法"); // 3 } public static String getStaticColor() { System.out.println("静态方法。"); // 4 return "Green"; } public String getInstanceColor() { System.out.println("实例方法。"); // 5 return "Yellow"; }}//public class JavaQuestion20160530 {// public static void main(String[] args) {// System.out.println(Tree.staticColor); // 6// Tree tree = new Tree();// System.out.println(tree.instanceColor); // 7// }//}
上面一个类运行时输出的结果是什么那?运行以后你就会发现。
原理大致如下,可能有不对的地方,请指正:
调用普通方法:先父类静态代码块,然后子类静态代码块,然后父类普通代码块,父类构造方法,子类代码块,子类构造方法,最后子类对象调用的方法。
调用静态方法:父类静态代码块,子类静态代码块,子类的静态方法。
如果父类静态代码块和子类静态代码块都只调用一次,如果先调用子类普通方法的时候执行父类和子类的静态代码块,那么后面无论调用子类普通方法还是调用子类静态方法,父类和子类代码块都不再执行。
0 0
- this super 构造函数 以及 加载及调用顺序
- 构造函数,super,this
- super() this() super this 与构造函数
- JAVA学习,this(),super()调用构造函数研究
- 构造函数的this和super的调用
- 子父类构造函数的调用演示,区分this()和super()
- JAVA中super和this调用构造函数
- super,this引用构造函数
- java构造方法,以及super、this关键字、隐式调用、显式调用
- 继承,super,this关键字及构造器
- 构造函数调用顺序
- 构造函数调用顺序
- 构造函数调用顺序
- 构造函数调用顺序
- java 构造函数 成员函数初始化顺序 以及多态的构造函数的调用顺序
- java 构造函数 成员函数初始化顺序 以及多态的构造函数的调用顺序
- java构造函数是否可继承,以及子类构造函数可否不使用super调用超类构造函数
- java构造函数是否可继承,以及子类构造函数可否不使用super调用超类构造函数
- C++static关键字
- Emacs Python completer
- java 文件 大小格式化输出
- 用R语言模拟掷硬币过程
- iOS - block、代理、通知
- this super 构造函数 以及 加载及调用顺序
- iOS开发之关于APP生命周期
- Reverse Vowels of a String (easy)
- 1.4、ServletContextAttributeListener监听器范例
- linux工具---用qemu调试linux内核
- Qt在Windows下的三种编程环境搭建
- CSS颜色超市
- 分块查找
- HDU4833 Best Financing (DP)