SwitchboardSession ss = new SwitchboardSession( msn, serv, (String)null ) //在同一个包里有SwitchboardSession的定义;
{ private String firstCallName = null;
private boolean isFirstJoin = true;
public void init() throws IOException            //重写了init();
{
this.firstCallName = toCallLoginName;
Callback cb = Callback.getInstance("processUserCall", this.getClass()); OutgoingMessage out = new OutgoingMessage("USR");
TransactionId( out );
out.add( msn.getLoginName() );
out.add( cookie );
out.setBackProcess( cb ); sendMessage( out );
} public void processUserCall( IncomingMessage msg ) throws IOException     //重写了一些方法;  
{
Callback cb = Callback.getInstance("processCallResult",this.getClass()); OutgoingMessage out = new OutgoingMessage("CAL");
TransactionId( out );
out.add( firstCallName );
out.setBackProcess( cb ); sendMessage( out );
} protected void processWhoJoined( IncomingMessage msg ) throws Exception
{
callingMap.remove( toCallLoginName );
super.processWhoJoined( msg ); if( isFirstJoin )
{
isFirstJoin = false;
msn.fireSwitchboardSessionStartedEvent( this ); if( lockMap.containsKey(tr) )
{
sessionMap.put( tr, this );
Object lock = lockMap.remove(tr);
if( lock!=null )
{
synchronized(lock)
{
lock.notify();
}
}
} sessionOpened();
}
} public void processCallResult( IncomingMessage msg ) throws IOException
{
callingMap.remove( toCallLoginName );
String sessionId = msg.get(1);
setSessionId( sessionId );
} public void cleanUp()
{
    super.cleanUp();
callingMap.remove( toCallLoginName ); if( getSessionId()==null )
    msn.fireSwitchboardSessionAbandonEvent( this, firstCallName );
}
};                 ss.start();                //start()在上面没有被重写,此处应该调用的是同一个包内定义的那
                                                  //个SwitchboardSession类中的方法;
                                           //其中start()中调用了init();试问,会调用哪个init()?
                                           //是上面重写过的,还是同一个包内的SwitchboardSession那个?以上代码是Java实现简单的的MSN功能中的部分代码!