覆盖”指的是重新定义基类的方法,使得该方法在派生类中有着不同的含义。“重载”指的是赋予方法名两个定义,解析出来有不同的参数列表。重载可以存在于任何类中,不管定义类时是否明确指定了基类。
下面解释如何区分他们:“覆盖”方法定义时,派生类中给出的新方法定义拥有完全一样的参数数目及类型;另一方面,假如派生类的方法拥有不同的参数数目,或者假如某个参数类型不同于基类中的地,则派生类会拥有这两人方法。这时就是“重载”。重载时也可以不涉及到基类,只要在类定义中同时给出两个方法定义即可。
覆盖和重载的区别
override:覆盖,它是覆盖了一个方法并且对其重写,以求达到不同的作用。对我们来说最熟悉的覆盖 就是对接口方法的实现, 在接口中一般只是对方法进行了声明,而我们在实现时,就需要 实现接口声明的所有方法。除了这个典型的用法以外,我们在继承中也可能会在子类覆盖 父类中的方 法。 在覆盖要注意以下的几点: overload:重载,它是指我们可以定义一些名称相同的方法,通过定义不同的输入参数来区分这些方 法,然后再调用时,VM就会根据不同的参数样式,来选择合适的方法执行。在使用重载要 注意以下的几点: 序(当然,同一方法内的几个参数类型必须不一样; 果定义的话,也只是定义了一个新方法,而不会达到重载的效果。 |