您的位置:首页 > 编程语言 > Java开发

Java overload v.s. override

2014-05-02 12:15 169 查看
overload:

1. 在同一个类中

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

// all corret overloads
public 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 overload
public 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 访问。而反过来是错误的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: