重载(overload)和重写(override)的区别:
重载就是同一个类中,有多个方法名相同,但参数列表不同(包括参数个数和参数类型),
与返回值无关,与权限修饰符也无关。调用重载的方法时通过传递给它们不同的参数个数和参数类型来决定具体使用哪个方法,这叫多态。 (2同1不2无关)
重写就是子类重写基类的方法,方法名,参数列表和返回值都必须相同,否则就不是重写而是重载。
权限修饰符不能小于被重写方法的修饰符。重写方法不能抛出新的异常或者是比被重写方法声明更加宽泛的检查型异常。
(1)子类中不能重写父类中的final方法
(2)子类中必须重写父类中的abstract方法
(3同1小1大)
注改正重写错误:(2同2小1大)
子类重写方法的返回值必须比父类方法的返回值小或相等的意思是说
子类重写方法的返回值类型应为父类方法返回值类型的子类 或和父类方法
返回值类型相等
看下面代码
class coding
{
public Object info()
{
return 2;
}
}
public class coding212 extends coding
{
public String info()
{
return "experiment";
}
public static void main(String[] args)
{
coding212 in=new coding212();
System.out.println(in.info());
}
}
上述代码输出experiment
由此可知类重写方法的返回值类型可以为父类方法返回值类型的子类
当然也可和父类方法返回值类型相等