next up previous
Next: Access to the public Up: Unit 08 Previous: Compatibility

Compatibility between actual and formal parameters

What we have seen regarding compatibility between superclass and subclass applies also to parameter passing.

public class TestCompatibility2 {
  public static void printPerson(Person p) {
    System.out.println(p.getName());
    System.out.println(p.getResidence());
  }

  public static void printStudent(Student s) {
    System.out.println(s.getName());
    System.out.println(s.getResidence());
    System.out.println(s.getFaculty());
  }

  public static void main(String args[]) {
    Person pr = new Person("Daniele", "Roma");
    Student st = new Student("Jacopo", "Roma", "Engineering");
    printPerson(pr);   //OK
    printPerson(st);   //OK! Student is compatible with Person
    printStudent(st);  //OK
    printStudent(pr);  //ERROR! Person is not compatible with Student
  }
}


next up previous
Next: Access to the public Up: Unit 08 Previous: Compatibility