title: When overriding `init` method, why it is important to define it again?
body: <p>I had an exercise to override init method, so I need to create an <code>init</code> method that will set some attributes as well.</p>
  
  <p>My question is: why do I need to define the original <code>init</code> method as well? in case that the new <code>init</code> method won't work?</p>
  
  <p>This is my <code>.h</code> file:</p>
  
  <pre><code>#import &lt;Foundation/Foundation.h&gt;
  
  #import "XYPoint.h"
  
  @interface Rectangle: NSObject
  
  @property float width, height, tx, ty;
  
  -(XYPoint *) origin;
  -(void) setOrigin: (XYPoint *) pt;
  -(void) translate: (XYPoint *) point;
  -(id) initWithWidth:(int) w andHeight:(int) h;
  -(id) init;
  
  @end
  </code></pre>
  
  <p>And <code>.m</code> (only the init methods):</p>
  
  <pre><code>-(id) initWithWidth:(int)w andHeight:(int)h
  {
      self = [super init];
  
      if (self)
      {
          [self setWidth:w andHeight:h];
      }
  
      return self;
  }
  
  -(id) init
  {
      return [self initWithWidth:0 andHeight:0];
  }
  </code></pre>
  
  <p>I know that it is good this way, but if someone can explain me why is that I would be appreciated.</p>