package edu.columbia.cs.cs1007.comics;


/**
 * An abstract class Superhero.
 @author Julia Stoyanovich (jds2109@columbia.edu)
 *         COMS 1007, Summer 2009
 *
 */
public abstract class SuperHero extends SuperBeing {
  
  private String _superpower;
  
  /**
   * Constructor.
   @param name
   @param superpower
   */
  public SuperHero(String name, String superpower) {
    super(name);
    _superpower = superpower;
  }
  
  /**
   * Accessor that gets the superpower of the superhero. 
   @return superpower
   */
  public String getSuperpower() {
    return _superpower;
  }
  
  /**
   * Convey your message to the world.
   @return message
   */
  public String speakUp() {
    return super.speakUp() " : I will kill the villain using my superpower, " 
        _superpower + ", and will save the world";
  }

  /**
   * Save the world from a villain.  
   @return world status, as a string
   */
  public String saveTheWorld(Villain villain) {
    
    String dialogue = killVillain(villain);
    
    return dialogue;
  }

  /**
   * Abstract method, must be overridden in the subclass.
   @param villain
   @return true on success, false on failure
   */
  public abstract String killVillain(Villain villain);
  
}