关于继承的一点疑问
子类继承父类后,添加了自己的属性和方法,还重写了父类的一个方法。然后再子类的主方法中创建子类的对象,在调用属性和方法时发现如下规律:1 如果子类中存在要调用的方法(包括子类添加的和重写的,但是不包括继承来的),就会调用子类自己的方法,如果找不到,就在父类里找。
2 如果调用的方法在子类里找到了,就会执行它,且会对子类的属性进行操作,这些属性包括自己添加的,但不包括继承的。如果在父类里找到了要调用的方法,就操作父类的属性。
3 如果子类中的方法要操作的属性在子类中无法找到,就会操作父类里的同名属性(假设该属性可以继承)。
4 如果父类里的方法调用了别的方法,且父类的主调方法在子类中没有被重写,被调用的方法在子类中被重写了,这时,子类对象调用方法时最后也会调用到子类重写的那个方法。
但是现在出现了一个问题,就是所有的类都是继承Object类,所有类的toString()方法都是在object类里定义的。这样就有问题了,如果子类对象调用toSring()方法,按照上面的规律,应该执行的是在子类对象中的Object对象的toString()方法。
这个矛盾应该怎么破?
[此贴子已经被作者于2018-6-3 21:17编辑过]