Java overload v.s. override

来源:互联网 发布:淘宝买家怎么确认付款 编辑:程序博客网 时间:2024/05/17 04:41

overload:

1. 在同一个类中

2. 方法名一样,参数个数和参数类型不同

// all corret overloadspublic void bark() {System.out.println("No barking");}public String bark(String with, int i) {System.out.println("No barking");return "bark";}public void bark(int i, String with) {System.out.println("No barking");}



 

3. 返回值可以相同,可以不同。这不是判断 overload 的标准

// wrong corret overloadpublic void bark() {System.out.println("No barking");}public String bark() {System.out.println("No barking");return "bark";}

 

Overriding:

1. 父类与子类之间

2. 子类中的方法与父类中的某一方法具有相同的方法名、返回类型和参数表 (注意在overload中, return value 不必相同)

3. 访问修饰符的限制一定要大于被重写方法的访问修饰符(public>protected>default>private)

因此,通过 override 可以扩大方法的访问权限

public class Base {private void test(int i)    {        System.out.print(i);    }}public class ChildBase extends Base {public void test(int i)    {        i++;        System.out.println(i);    }}

test() 在 Base 中是private, 通过 override 后可以 public 访问。而反过来是错误的。


 

0 0
原创粉丝点击