java程序的执行顺序(最好能举例说明,要有子类继承的,包括变量的初始化,构造方法的调用,成员方法的调用)
展开全部
继承时候类的执行顺序问题
package test;
public class FatherClass
{
public FatherClass()
{
System.out.println("FatherClass Create");
}
}
子类:
package test;
import test.FatherClass;
public class ChildClass extends FatherClass
{
public ChildClass()
{
System.out.println("ChildClass Create");
}
public static void main(String[] args)
{
FatherClass fc = new FatherClass();
ChildClass cc = new ChildClass();
}
}
输出结果:
C:\>java test.ChildClass
FatherClass Create
FatherClass Create
ChildClass Create
关于继承你还是看看java编程思想,说得很明白
初始化基础类
子类会去初始化基类的,也就是说会调用基类的构造函数,这个应该是无参的
--------------------------------------------------------
FatherClass fc = new FatherClass();
输出 :
FatherClass Create
ChildClass cc = new ChildClass();
由于继承关系,先执行父类的构造函数,再执行自己的构造函数,输出 :
FatherClass Create
ChildClass Create
--------------------------------------------------------
子类继承父类会先初始化父类,调用父类的构造函数,
子类的构造方法的第一条语句就是调用父类的没有参数的构造方法,如果你没有写出这条语句java虚拟机就会默认的调用,如果你显示的写了这条语句,就一定要写在构造方法中的第一条语句,不然会报错
原理简述:只有在构造方法中调用了父类的构造方法才能继承父类的相关属性和方法,要不然子类从哪里继承父类的属性和方法,在实例化子类的时候又没有和父类有任何关系。
--------------------------------------------------------
子类的构造函数默认调用和这个构造函数参数一致的父类构造函数,除非在此子类构造函数的第一行显式调用父类的某个构造函数。
package test;
public class FatherClass
{
public FatherClass()
{
System.out.println("FatherClass Create");
}
}
子类:
package test;
import test.FatherClass;
public class ChildClass extends FatherClass
{
public ChildClass()
{
System.out.println("ChildClass Create");
}
public static void main(String[] args)
{
FatherClass fc = new FatherClass();
ChildClass cc = new ChildClass();
}
}
输出结果:
C:\>java test.ChildClass
FatherClass Create
FatherClass Create
ChildClass Create
关于继承你还是看看java编程思想,说得很明白
初始化基础类
子类会去初始化基类的,也就是说会调用基类的构造函数,这个应该是无参的
--------------------------------------------------------
FatherClass fc = new FatherClass();
输出 :
FatherClass Create
ChildClass cc = new ChildClass();
由于继承关系,先执行父类的构造函数,再执行自己的构造函数,输出 :
FatherClass Create
ChildClass Create
--------------------------------------------------------
子类继承父类会先初始化父类,调用父类的构造函数,
子类的构造方法的第一条语句就是调用父类的没有参数的构造方法,如果你没有写出这条语句java虚拟机就会默认的调用,如果你显示的写了这条语句,就一定要写在构造方法中的第一条语句,不然会报错
原理简述:只有在构造方法中调用了父类的构造方法才能继承父类的相关属性和方法,要不然子类从哪里继承父类的属性和方法,在实例化子类的时候又没有和父类有任何关系。
--------------------------------------------------------
子类的构造函数默认调用和这个构造函数参数一致的父类构造函数,除非在此子类构造函数的第一行显式调用父类的某个构造函数。
展开全部
class SuperClass {
private int n;
/*
SuperClass() {
System.out.println("SuperClass()");
}
*/
SuperClass(int n) {
System.out.println("SuperClass(" + n + ")");
this.n = n;
}
}
class SubClass extends SuperClass {
private int n;
SubClass(int n) {
//super();
System.out.println("SubClass(" + n + ")");
this.n = n;
}
SubClass() {
super(300);
System.out.println("SubClass()");
}
}
public class TestSuperSub {
public static void main(String arg[]) {
//SubClass sc1 = new SubClass();
SubClass sc2 = new SubClass(400);
}
}
private int n;
/*
SuperClass() {
System.out.println("SuperClass()");
}
*/
SuperClass(int n) {
System.out.println("SuperClass(" + n + ")");
this.n = n;
}
}
class SubClass extends SuperClass {
private int n;
SubClass(int n) {
//super();
System.out.println("SubClass(" + n + ")");
this.n = n;
}
SubClass() {
super(300);
System.out.println("SubClass()");
}
}
public class TestSuperSub {
public static void main(String arg[]) {
//SubClass sc1 = new SubClass();
SubClass sc2 = new SubClass(400);
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询