簡單的區分就是 overriding是相同的method name相同的parameter list而且在不同的class里(in a super/sub class clain) overloading是相同的signature(method name和parameter list完全相同)可以在相同的class里, complier distinguished between over loaded methods bases on actural parameters. 講的複雜點還需要涉及polymorphism
上面不小心寫錯了.... overriding是相同的signature(即method name和parameter list完全相同) overloading是相同的method name 不同的parameter list, complier distinguished between over loaded methods bases on actural parameters.
superclass: A 父类 subclass: B 子类要在B中更进一步更合适地实现某个方法,一般用override 如 A是 Class 任意边形 method: draw() {} B是 Class 正方形 method: draw() {} 这时候B就应该重写draw()方法,以便更好实现draw画图这个功能 ======== 而overloadding 用于不同参数,因为很可能你希望传入不同的type,如 sort(int[] a,int begin, int end) sort(String[] a, int begin, int end) 这个例子你希望对 int[] 或 String[] 进行排序,而提供两个方法名又无必要,所以使用overload就是最好的方法
overriding是相同的method name相同的parameter list而且在不同的class里(in a super/sub class clain)
overloading是相同的signature(method name和parameter list完全相同)可以在相同的class里, complier distinguished between over loaded methods bases on actural parameters.
講的複雜點還需要涉及polymorphism
overriding是相同的signature(即method name和parameter list完全相同)
overloading是相同的method name 不同的parameter list, complier distinguished between over loaded methods bases on actural parameters.
subclass: B 子类要在B中更进一步更合适地实现某个方法,一般用override
如
A是 Class 任意边形
method: draw() {}
B是 Class 正方形
method: draw() {}
这时候B就应该重写draw()方法,以便更好实现draw画图这个功能
========
而overloadding 用于不同参数,因为很可能你希望传入不同的type,如
sort(int[] a,int begin, int end)
sort(String[] a, int begin, int end)
这个例子你希望对 int[] 或 String[] 进行排序,而提供两个方法名又无必要,所以使用overload就是最好的方法