//polymorphism : refer to previous examples' inheritance hierarchy //superclass: eg27_GradedActivity <- eg32_PassFailActivity <- eg32_PassFailExam : subclass public class eg34_Polymorphic { public static void main(String[] args) { //create an array of references eg27_GradedActivity[] tests = new eg27_GradedActivity[3]; //can only access 3 methods in eg27_GradedActivity class tests[0] = new eg27_GradedActivity(); tests[0].setScore(95); System.out.println("Test 0 score = "+tests[0].getScore()+"; grade = "+tests[0].getGrade() ); //getGrade() method of eg27_GradedActivity tests[1] = new eg32_PassFailExam(20, 5, 60); System.out.println("Test 1 score = "+tests[1].getScore()+"; grade = "+tests[1].getGrade() ); //getGrade() method of eg32_PassFailExam //override, dynamic binding, determine at runtime which method to call = type of obj referenced //skipping tests[2] //System.out.println(tests[1].getPointsEach() ); this oone won't work due to declaration on first line } }