子类、父类各种方法的执行顺序

先贴出代码 :

 父类Animal ,

package parentAndChild;

public class Animal {
/**
* 动物类
*/
static{
System.out.println("父类的静态代码块");
}

{
System.out.println("执行父类的构造代码块");
}

public Animal(){
System.out.println("执行父类的构造方法");
}

public Animal(String name){
System.out.println("执行父类的构造方法   动物名称");
}

public void A(){  
        System.out.println("执行父类的A方法");  
    }   
}


子类Dog


package parentAndChild;

/**
 * 狗类,继承动物
 */
public class Dog extends Animal{

public static void main(String[] args) {
Dog Dog = new Dog();
Dog.A();
}

static {
System.out.println("子类的静态代码块");
}

{
System.out.println("执行子类的构造代码块"); 
}

public Dog(){
System.out.println("执行子类的构造方法");
}

public void A() {  
        System.out.println("执行子类的A方法");  
    }  

public void B(){
System.out.println("执行子类的B方法");  
}
}


执行顺序为:

父类的静态代码块
子类的静态代码块
执行父类的构造代码块
执行父类的构造方法
执行子类的构造代码块
执行子类的构造方法
执行子类的A方法




思考:


  1.比较各个方法的执行顺序。
  2.被子类重写的方法,只执行重写的方法,不执行父类被重写的方法。即不执行父类A方法,只执行子类A方法。
  3.父类的静态代码,构造代码块,无参(带参)构造方法在子类执行时都要执行。
 

你可能感兴趣的:(java)