类在构造时,构造方法内,类属性,父类属性,super的执行顺序
2012-08-19 11:07
176 查看
先贴代码:大家猜猜结果
package shiyan;public class ThisTest {public static void main(String[] args){new CCC();}}class C{public int a = 1;public C(){System.out.println(a);this.fun();fun();}public void fun(){System.out.println(a);}}class CC extends C{int a = 2;public CC(){super();// System.out.println(a);}public void fun(){System.out.println(this.a);}}class CCC extends CC{int a = 3;public CCC(){super();}public void fun(){// a = a;System.out.println(this.a);}}
答案是: 1
0
0
这涉及到类在构造时,调用构造方法内内容的执行顺序
上面例子:super()是隐藏着的,为了方便,我把它写出来了
在调用完super()之前类中属性其实没有初始化,调用完super()之后,立马初始化类属性
this在什么方法体类,其定义类型就是这个方法体类的类,其实际类是CCC
就写这么多了,大家仔细琢磨上面几句话,就OK了,还有问题就直接Q我吧!
QQ:992077171
相关文章推荐
- 关于java中子类,父类中,静态代码块: staic{},动态代码块:{},构造方法,类属性,对象属性等执行顺序做个总结:
- JAVA中静态代码块、构造方法、Super()父类与子类之间执行顺序
- 父类,子类,静态属性,静态代码块,构造代码块,构造函数,执行顺序
- 2018/01/08JAVA 基础 / 接口与继承/Java关键词:变量引用 super 调用父类对象方法/构造方法【或者访问父类对象属性】的方式归纳
- java父类,子类静态块和构造方法的执行顺序
- 父类子类构造方法、静态代码块、非静态代码块的执行顺序
- 关于静态块、静态属性、构造块、构造方法的执行顺序
- 父类子类静态代码块,构造方法的执行顺序
- 子类与父类构造方法执行顺序
- Java继承中父类子类构造方法、静态代码块、非静态代码块的执行顺序
- java中 静态成员、实例成员、构造方法在子类和父类中的执行顺序
- java父类子类中静态块非静态块构造方法的执行顺序和继承
- 【JAVA】探究JAVA父类子类静态代码块、静态变量、构造方法的执行顺序
- JAVA父类子类静态代码块、静态变量、构造方法的执行顺序
- 静态语句块,非静态语句块,构造方法在子类和父类的执行顺序
- java父类子类静态块、块、构造方法的执行顺序
- 静态代码块,静态属性,静态方法,普通代码块,普通方法,普通属性,构造方法的加载顺序及执行顺序
- 静态代码块、代码块、构造方法、普通方法、static方法、 *静态属性、普通属性的加载顺序、执行顺序
- 静态属性、静态代码块、静态方法、构造方法、普通方法的执行顺序
- 父类与子类的静态代码块、代码块、构造方法执行顺序