我不明白为什么这在java中有效:
如果我在一个对象中有一个 Integer 对象,例如:
Object myIntObj = new Integer(5);
现在如果我这样做:
System.out.println(myIntObj);
输出是:5
我现在 Integer 类有一个 toString 方法的 ovveride 但在这种情况下是不同的(我认为)。对于多态性,如果我在“父变量”中有一个“子对象”,则该对象不会改变其真实类型(在本例中为整数)但是......它(在 Object 变量中)可以只使用对象类,那么为什么如果我写:
System.out.println(myIntObj);
我可以直接看到数字 5 而不是这个对象的引用?因为对象类中的toString方法默认返回的只是对象引用的字符串。
像:
Object currentPlayer = new Player();
System.out.println(currentPlayer);
在这种情况下,输出是 Player 对象的引用,因为在对象类中调用了 toString 方法。
那么为什么在之前的例子中我没有看到参考而是直接看到数字呢?从逻辑上讲,多态性的规则说:如果你在“父亲”变量中有一个“孩子”对象,这个对象,在里面,remanis 相同,但他被用作对象的一个实例,所以他可以只使用类对象等等只是对象的方法,所以我没有看到引用而是直接看到数字真的很奇怪。
我希望你明白我的意思。