本文讲解 Java 中,多态程序的执行顺序

一、程序执行顺序

Java 中内存有三部分组成

  • 方法区:存放静态变量,常量,类加载信息
  • 栈:存放局部变量,数组的首地址
  • 堆:存放 new 出的对象、数组的内存

二、代码演示

本代码块包含了多态、静态代码块、非静态代码块等代码,然后函数调用时只输出对应的调用文本:

package com.HelloWorld;

public class parent {
    private int a;
    static int b;
    static{
        b = 100;
        System.out.println("静态代码块加载");
    }
    {
        System.out.println("非静态代码块加载");
    }
    public parent() {
        System.out.println("父类无参构造函数调用");
    }
    public parent(String name) {
        System.out.println("父类有参构造函数调用");
    }
}
class son extends parent{
    public String name;
    public son(){
        // 这里默认调用了无参的父类构造函数 super();
        System.out.println("子类无参构造函数调用");
    }
    public son(String name){
        super(name);
        System.out.println("子类有参构造函数调用");
    }

    public void getname(){
        System.out.println("子类独有的方法");
    }
    public static void main(String[] args) {
        // 子类对象可以赋值给父类对象 但是子类的独有的方法自动隐藏
        parent p = new son();
        // a中无法调用getname方法
        son s = new son("shen");
        // s.getname();
        // p.test();
        System.out.println("main方法调用");
    }
}


程序结果:

这也就是代码的执行顺序