java 方法重载(Overload)与重写(Override)
方法重载(Overload)
当创建一个对象时,也就给此对象分配到存储空间取了一个名字,所谓的方法就是给某个动作取的名字,通过名字可以引用所有的对象和方法。简单来说就是方法名字相同,但是其参数、参数顺序,参数类型,返回类型都可以不一样,其里面的具体操作也不一定相同。
例如
public void prints(){
System.out.println("TestMain.prints");
}
public void prints(String s){
System.out.println("s = " + s);
}
public int prints(int v){
System.out.println("v = " + v);
return v + 1;
}
方法重写(Override)
参数列表与被重写的参数列表必须完全相同;
返回类型与被重写方法的返回类型可以不相同,但必须是父类返回值的派生类;
访问权限不能比父类中被重写的方法的访问权限更低;
父类的成员方法只能被他的子类重写;
声明为final的方法不能被重写;
声明为static的方法不能被重写但是能够被再次声明;
子类和父类在同一个包中,那么子类可以重写父类所有方法,除了声明为private和final的方法;
子类和父类不在同一个包中,那么子类只能够重写父类声明为public和protected的非final方法;
重写的方法能够抛出任何非强制异常,无论被重写的方法是否抛出异常;
但是,重写的方法不能抛出新的强制性异常,或者比被重写方法声明的更广泛的强制性异常,反之则可以;
构造方法不能被重写;
如果不能继承一个类,则不能重写该类的方法。