java继承和多态的异同