java的抽象类继承,.. abstract void testAbstract();..有下面4个问题,求解啊??

2025-06-28 05:21:30
推荐回答(2个)
回答1:

我来回答,不对的地方请指正。

  1. 在我的理解中,这二者是一回事。

  2. 子类的非静态成员的初始化在父类的构造方法之后执行。i在子类中是非静态成员,在它初始化(即赋值100)之前,要先执行父类静态变量的初始化、子类静态成员的初始化、父类构造方法等操作,上例中,在父类的构造方法中调用了testAbstract()方法,此方法在父类中被定义为抽象方法,因此实际调用的是子类的tesAbstract()方法,但此时变量i未初始化,所以为0 。

  3. 一个类继承了某个抽象类,如果这个类不被定义成抽象类,必须全部实现父类中的抽象方法。

  4. 参看2 ,此时初始化已完成,所以i=100.

回答2:

  1. 覆盖和重写可以理解为一个意识。

  2. 先初始化父类,后初始化子类,父类初始化的时候,子类没有初始化呢,默认int为0.

  3. 抽象类不能实例化,所有的抽象方法在子类中必须实现。

  4. 子类初始化完成后,i对应的内存值已经从0改为100了。