Java overload v.s. override

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 访问。而反过来是错误的。


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值