title: Can subclass override non-public methods
body: <p>I have two classes: <code>BatchDownloader</code>, <code>SpeechDownlader</code></p>
  
  <p><code>BatchDownloader</code> is the base class, and <code>SpeechDownloader</code> inherited it.</p>
  
  <p>In <code>BatchDownloader</code>, whenever one file was downloaded, <code>-(void)downloadComplete:task</code> will be called.</p>
  
  <p>But in <code>SpeechDownloader</code>, I also want to post a notification in <code>downloadComplete:task</code>.</p>
  
  <p>Can I just write the method with the same name in <code>SpeechDownloader</code>'s implementation ? or there is a better way ?</p>
  
  <p>Thanks.</p>
  
  <p>p.s. I don't want to make <code>-(void)downloadComplete:task</code> public, because it should only be called by itself.</p>