1 public class DynamicBindingDemo { 2 public static void main(String[] args) { 3 m(new GraduateStudent()); 4 m(new Student()); 5 m(new Person()); 6 m(new Object()); 7 } 8 9 public static void m(Object x) { 10 System.out.println(x.toString()); 11 } 12 } 13 14 class GraduateStudent extends Student { 15 } 16 17 class Student extends Person { 18 @Override 19 public String toString() { 20 return "Student"; 21 } 22 } 23 24 class Person extends Object { 25 @Override 26 public String toString() { 27 return "Person"; 28 } 29 }