方法重载和重载有什么区别?
重载方法和重写方法有什么区别? 任何人都可以用一个例子来解释吗?
方法重载处理的是具有相同名称但参数不同的同一个类中有两个或多个方法的概念。
void foo(int a) void foo(int a, float b)
方法覆盖意味着有两个方法具有相同的参数,但实现方式不同。 其中一个将存在于父类中,而另一个将存在于派生类或子类中。 @Override
注释虽然不是必需的,但可以在编译时强制执行正确的重写方法 。
class Parent { void foo(double d) { // do something } } class Child extends Parent { @Override void foo(double d){ // this method is overridden. } }
方法重写是当子类重新定义与父类相同的方法时,具有相同的参数。 例如 ,标准Java类java.util.LinkedHashSet
扩展了java.util.HashSet
。 方法add()
在LinkedHashSet
重写。 如果你有一个HashSet
types的variables,并且你调用它的add()
方法,它会根据它是一个HashSet
还是一个LinkedHashSet
来调用add()
的适当实现。 这被称为多态性。
方法重载是在同一个类中定义几个方法,接受不同数量和types的参数。 在这种情况下,调用的实际方法是在编译时根据参数的数量和types决定的。 例如 , System.out.println()
方法被重载,所以你可以传入string和string,并调用不同版本的方法。