1. class Person {
    2. public String name;
    3. public int age;
    4. public Person(String name, int age) {
    5. this.name = name;
    6. this.age = age;
    7. }
    8. public void greet(Person other) {
    9. System.out.println("Hello, " + other.name);
    10. }
    11. }
    12. class Grandma extends Person {
    13. public Grandma(String name, int age) {
    14. super(name, age);
    15. }
    16. @Override
    17. public void greet(Person other) {
    18. System.out.println("Hello, young whippersnapper");
    19. }
    20. public void greet(Grandma other) {
    21. System.out.println("How was bingo, " + other.name + "?");
    22. }
    23. }
    24. public class testPeople {
    25. public static void main(String[] args) {
    26. Person n = new Person("Neil", 12);
    27. Person a = new Grandma("Ada", 60);
    28. Grandma v = new Grandma("Vidya", 80);
    29. // Grandma al = new Person("Alex", 70); // Compile time error
    30. n.greet(a); // "Hello Ada"
    31. n.greet(v); // "Hello Vidya"
    32. v.greet(a); // "Hello, young whippersnapper"
    33. v.greet((Grandma) a); // "How was bingo, Ada?"
    34. a.greet(n); // "Hello, young whippersnapper"
    35. a.greet(v); // "Hello, young whippersnapper"
    36. ((Grandma) a).greet(v); // "How was bingo, Vidya?"
    37. ((Grandma) n).greet(v); // Runtime error
    38. }
    39. }

    :::danger 特别注意第42行的输出!!! :::