我很难理解java中的动态绑定和继承。 继承人的代码liitle位:静态和动态绑定的概念
printer.print(person); // Printer is printing a person, which says: I am a Person
printer.print(specialPerson); // Printer is printing a special person, which says: I am a SpecialPerson
printer.print((Person)specialPerson); // Printer is printing a person, which says: I am a SpecialPerson
System.out.println(person); // I am a Person
System.out.println(specialPerson); // I am a SpecialPerson
System.out.println((Person)specialPerson); // I am a SpecialPerson
System.out.println(((Object)specialPerson).toString()); // I am a SpecialPerson
SpecialPerson是一个子类的人在这里。这两个类都会覆盖toString方法。另外还有一个班级打印机,它有2种人员和专人对象的方法。我了解前三行:它调用打印机类并执行匹配类型的方法。第三行将对象动态地转换为人物对象。但是我不明白第6行:为什么对象的转换不改变被调用的方法。它不是由动态类型调用,而是静态类型?
因为specialperson仍然是SpecialPerson,所以方法保持不变 – JClassic
我是否正确:当我说第6行的转换操作符“改变”静态(类型),但是因为覆盖使用动态绑定,被调用的方法保持不变? – newbie