Override与Overload的区别

 Override:

       ① 用于子类覆盖父类的方法,一般在子类中标注。

       ② 子类中此方法必须与父类中此方法完全相同,相同的参数列表,相同的返回类型,抛出的异常完全相同。

       ③ 方法被定义为final 不能被覆盖。

       ④ 方法的权限为private 不能覆盖重写。

Overload:

       ① 在重载时,只能通过不同的参数样式进行重载(不同的参数类型,参数个数,参数顺序)。

       ② 不能通过返回类型,抛出异常的类型,访问权限来重载

       ③ 方法异常的数目和类型不能作为重载的依据。

       ④ 重载是发生在同一个类中,不同方法之间。

其具体实现机制: 

  
override重写,重写是一种动态绑定的多态机制。即在父类和子类中同名元素(如成员函数)有不同 的实现代码。执行的是哪个代码是根据运行时实际情况而定的。 

overload重载,重载是一种参数多态机制,即代码通过参数的类型或个数不同而实现的多态机制。 是一种静态的绑定机制(在编译时已经知道具体执行的是哪个代码段)。

package OverrideOverloadTest;

class A{
	public int getVal(){
		return (5);
	}
}
class B extends A{
	public int getVal(){
		return (10);
	}
}
class C extends A{
	public int getVal(int val){
		return val;
	}
}

public class override {
	public static void main(String[] args){
		B b = new B();
		A a1 = (A)b;
		C c = new C();
		A a2 = (A)c;
		System.out.println(a1.getVal());
		System.out.println(b.getVal());
		System.out.println(a2.getVal());
		System.out.println(c.getVal());
		System.out.println(c.getVal(6));
	}
}

结果:10,10 ,5, 5, 6, 6.6

猜你喜欢

转载自blog.csdn.net/Curry7895/article/details/82587886