Inheritance

  • Create a super class and subclass
    • Characteristics are extended to the subclass of the superclass
public class A{

}

public class B extends A{
    
}
  • Allows reusing the code and adding attributes
  • Subclass can become a superclass as well by extending the subclass
  • Super is used to call the superclass ## Overriding
  • @Override to indicate that you are overriding the superclass
  • Makes code more readable
  • Resets the name of the superclass

Creating References using Inheritance Hierarchies

  • Lower levels of hierarchy inherit upper levels of hierarchy

Polymorphism

  • Multiple classes that are related by inheritance
  • Object superclass contains
    • equals()
    • toString()

Homework

  • Create a world cup superclass with properties of your choice and subclasses for five teams which inherits those properties
  • Write a constructor for one of those subclasses
public class SemiFinalTeam{
    String jerseyColor;
    boolean semiFinals;
    boolean finals;

    public SemiFinalTeam(){
        this.semiFinals = true;
    }

    public static void determineResults(SemiFinalTeam team1, SemiFinalTeam team2){
        team1.SemiFinalResult();
        team2.SemiFinalResult();
    }

    public void SemiFinalResult(){
        
    }

    public static void main(String[] args){
        Argentina argentina = new Argentina();
        Croatia croatia = new Croatia();
        France france = new France();
        Morocco morocco = new Morocco();
        SemiFinalTeam.determineResults(croatia, argentina);
        SemiFinalTeam.determineResults(france, morocco);
        System.out.println("Argentina: " + "Jersey Color = " + argentina.jerseyColor + ", Semi Finals = " + argentina.semiFinals + ", Finals = " + argentina.finals);
        System.out.println("Croatia: " + "Jersey Color = " + croatia.jerseyColor + ", Semi Finals = " + croatia.semiFinals + ", Finals = " + croatia.finals);
        System.out.println("France: " + "Jersey Color = " + france.jerseyColor + ", Semi Finals = " + france.semiFinals + ", Finals = " + france.finals);
        System.out.println("Morocco: " + "Jersey Color = " + morocco.jerseyColor + ", Semi Finals = " + morocco.semiFinals + ", Finals = " + morocco.finals);
    }
}


public class Argentina extends SemiFinalTeam{
    public Argentina(){
        super();
        super.jerseyColor = "Blue + White";
    }

    public void SemiFinalResult(){
        super.finals = true;
    }
}

public class Croatia extends SemiFinalTeam{
    public Croatia(){
        super();
        super.jerseyColor = "Red + White";
    }

    public void SemiFinalResult(){
        super.finals = false;
    }
}

public class France extends SemiFinalTeam{
    public France(){
        super();
        super.jerseyColor = "Blue + White + Red";
    }

    public void SemiFinalResult(){
        super.finals = true;
    }
}

public class Morocco extends SemiFinalTeam{
    public Morocco(){
        super();
        super.jerseyColor = "Red + Green";
    }

    public void SemiFinalResult(){
        super.finals = true;
    }
}

SemiFinalTeam.main(null);
Argentina: Jersey Color = Blue + White, Semi Finals = true, Finals = true
Croatia: Jersey Color = Red + White, Semi Finals = true, Finals = false
France: Jersey Color = Blue + White + Red, Semi Finals = true, Finals = true
Morocco: Jersey Color = Red + Green, Semi Finals = true, Finals = true