开始JVM里面会有两个类 一个是 zi.class ,和Fu.class
1.运行到zi的构造函数的时候。会在第一样运行super()调用父类构造函数。那么我们就加载父类的代码块。
2.现有类我们才能创建new对象, 这样才会在堆里面开辟一块空间。
3.当我们new一个对象的时候。我们就调用子类的构造函数让进栈。 接着第一行的super()调用父类的构造函数。
4.父类也进栈了。但是在堆里面没有开辟内存空间,父类指向的是new的子类对象。
5.所以我们调用的是子类的方法。
package com.review;
public class BookPC
{
public static void main(String[] args)
{
/*
* 思路:
*/
Zi zi = new Zi();
System.out.println("你怎么看");
zi.show();
/**
* 开始JVM里面会有两个类 一个是 zi.class ,和Fu.class
* 1.运行到zi的构造函数的时候。会在第一样运行super()调用父类构造函数。那么我们就加载父类的代码块。
* 2.现有类我们才能创建new对象, 这样才会在堆里面开辟一块空间。
* 3.当我们new一个对象的时候。我们就调用子类的构造函数让进栈。 接着第一行的super()调用父类的构造函数。
* 4.父类也进栈了。但是在堆里面没有开辟内存空间,父类指向的是new的子类对象。
* 5.所以我们调用的是子类的方法。
*/
}
}
class Fu
{
Fu()
{
show();
}
public void show()
{
System.out.println("Fu show");
}
}
class Zi extends Fu
{
int num =8 ;
Zi()
{
super(); //这行代码即使我们没有写,也会默认存在的
this.num =9;
}
Zi(int i)
{
}
public void show()
{
System.out.println("zi shwo"+num);
}
}
运行结果:
zi shwo0
你怎么看
zi shwo9