本文讲解 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方法调用");
}
}
程序结果:
这也就是代码的执行顺序