Notes

  • Inheritance is used to store attributes for subclasses, making abstraction easier and reducing risk of error
  • Subclass constructor has to include "super" to access superclass parameters
  • Use @Override to override a method
  • One useful superclass is Object from java.lang
  • Polymorphism is when a method is used for different tasks in different classes (different forms)

Homework

World Cup superclass

  • 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 WorldCup {
    public int wins;
    public int losses;
    public int games;

    public WorldCup (int wins, int losses, int games) {
        this.wins = wins;
        this.losses = losses;
        this.games = games;
    }

    public String toString () {
        return "Wins = " + this.wins + ", Losses = " + this.losses + ", Games = " + this.games;
    }

}

public class USA extends WorldCup { 
    public USA (int wins, int losses, int games) {
        super (wins, losses, games);
    }
}

public class Spain extends WorldCup { 
    public Spain (int wins, int losses, int games) {
        super (wins, losses, games);
    }
}

public class France extends WorldCup { 
    public France (int wins, int losses, int games) {
        super (wins, losses, games);
    }
}

public class Morocco extends WorldCup { 
    public Morocco (int wins, int losses, int games) {
        super (wins, losses, games);
    }
}

public class Argentina extends WorldCup { 
    public Argentina (int wins, int losses, int games) {
        super (wins, losses, games);
    }
}

public class Test {
    public static void Main(String[] args) {
        USA usa = new USA(3, 1, 4);
        System.out.println("Team name: USA, " + usa);

        Spain spain = new Spain(2, 2, 4);
        System.out.println("Team name: Spain, " + spain);

        France france = new France(4, 1, 5);
        System.out.println("Team name: France, " + france);

        Morocco morocco = new Morocco(4, 0, 6);
        System.out.println("Team name: Morocco, " + morocco);

        Argentina argentina = new Argentina(5, 1, 6);
        System.out.println("Team name: Argentina, " + argentina);
    }
}
Test.Main(null);
Team name: USA, Wins = 3, Losses = 1, Games = 4
Team name: Spain, Wins = 2, Losses = 2, Games = 4
Team name: France, Wins = 4, Losses = 1, Games = 5
Team name: Morocco, Wins = 4, Losses = 0, Games = 6
Team name: Argentina, Wins = 5, Losses = 1, Games = 6

Teacher extended class

  • Add a getAge method in the Person super class
  • Create a new subclass Student with additional members of your choice to personalize the Student class
  • Create a new subclass Teacher with additiona members of your choice
  • Override the toString method using the @Override to print a Student and teacher object with new members
  • Print the student and teacher
import java.util.Date;

public class Person {
    private String name;
    private String birthday;
 
    public Person (String name, String birthday){
       this.name = name;
       this.birthday = birthday;
    }

    public int getAge() {
      return (LocalDate.now());
    }
 
    public String getName(){
       return name;
    }
 }
 
 public class Student extends Person {
    private int grade;
    private double gpa;
 
    public Student (String name, String birthday, int grade, double gpa) {
       super(name, birthday);
       this.grade = grade;
       this.gpa = gpa;
    }
 
    public int getGrade(){
       return grade;
    }
 }