Overriding Polymorphism?

class A

package{
	import flash.events.*
	import flash.display.MovieClip;
	public class A extends MovieClip{
		public function A():void{
			this.addEventListener(Event.ADDED_TO_STAGE, staged);
			this.addEventListener(Event.REMOVED_FROM_STAGE, unstaged);
		}
		private function staged(e:Event):void{
			trace(this+" staged");
		}
		private function unstaged(e:Event):void{
			trace(this+" unstaged");
		}
	}
}

class B

package {
	import flash.events.*
	import A;
	public class B extends A{
		private function staged(e:Event):void{
			this.addEventListener(MouseEvent.CLICK, clicked);
		}
		private function unstaged(e:Event):void{
			this.removeEventListener(MouseEvent.CLICK, clicked);
		}
		private function clicked(me:MouseEvent):void{
			trace(this+" clicked");
		}
	}
}

I guess i was wrong when i thought that the staged and unstaged in B would override the ones in A but it’s not working like that. Instead when added to stage it fires A’s. I found a workaround by placing eventdispatchers in A’s staged&unstaged and adding listeners in B’s default constructor. but this seems redundant and well it even raised another question.
the listeners point to private functions also named staged and unstaged and they do fire from B.