I´m a little confused.

Lets say I have:

A class in my app_code folder,which inherits from the Page class;

Code:
public class MyBasePage:Page
{
	public MyBasePage()
	{
		
	}

    protected override void OnInit(EventArgs e)
    {
        base.OnInit(e);
    }

    protected override void OnInitComplete(EventArgs e)
    {
        base.OnInitComplete(e);
    }

    protected override void OnLoad(EventArgs e)
    {
        base.OnLoad(e);
    }

    protected override void OnError(EventArgs e)
    {
        base.OnError(e);
        Response.Write("An error has occurred");
    }
}
If I create a new web page, that instead of inheriting from the page class, inherits from, MyBasePage, such as:

Code:
public partial class _MyDefault : MyBasePage
{
    protected void Page_Load(object sender, EventArgs e)
    {
        throw new ArgumentNullException("MyTest");
    }

    protected override void OnError(EventArgs e)
    {
        base.OnError(e);
    }

    protected override void OnInit(EventArgs e)
    {
        base.OnInit(e);
    }

    protected override void OnInitComplete(EventArgs e)
    {
        base.OnInitComplete(e);
    }
}
If you set break points on every method, of the MyBasePage and _MyDefault, what will happen is:

The OnInit and OnInitComplete methods of the _MyDefault page will fire and then the same events on the MyBasePage will, but then the load event of the MyBasePage will fire, instead of the Load event of the _MyDefault Page, and then the _MyDefault Page will.

Why is it that the events fire in this order?

I believe that the OnInit and OnInitComplete event is where the page´s control initialization happens. So maybe it would make sense that the
_MyDefault pages OnInit and OnInitComplete fires first, as it has an associated .aspx file, and the bulk of the controls will likely to be here.

Would this be correct?

And what about the Load event, why is it that the MyBasePage event fires first and then the _MyDefault page fires, (which has an associated .aspx file)?

Thanks