方法重写与方法重载 概念:

覆盖(Override),又叫重写,是指子类对父类方法的一种重写,方法名、参数列表必须相同,返回值小于父类,只能比父类抛出更少的异常,访问权限不能比父类的小。被覆盖的方法是private的话,就不是重写,而是定义的一个新方法;

重载(Overload)表示同一个类中可以有多个名称相同的方法,但这些方法的参数类型不同、个数不同、顺序不同,方法返回值和访问修饰符可以不同。

方法覆盖(重写)规则:

构成覆盖的条件:方法名、参数列表必须相同,返回值不同,访问权限不能比父类的小

即:
1)方法签名(方法名称 方法参数)必须相同
2)方法返回值类型可相同 也可以不同 (子类方法的返回值类型 可以是父类方法的返回值类型的子类型)
3)子类方法的访问权限可以更大
a)父类方法修饰为 public 子类方法修饰为public
b)父类方法修饰为protected 子类方法修饰为public/protected

方法覆盖规则:

构成重载的条件:参数类型不同,参数个数不同,参数顺序不同, 方法返回值和访问修饰符 可以不同

问题:返回值类型不同,可以重载吗???

不可以,因为Java中调用函数并不需要强制赋值
比如有两个方法:
void fun(){}
int fun(){
return 1;
}
在调用的时候,int x = fun();
编译器虽然可以直接识别而调用对应返回值类型的方法,但有时候你关心的不是他的返回值,而是调用的效果,这时候你会调用方法而忽略返回值。
像这样的调用:fun();
这时候Java编译器就不能判断调用的是哪一个fun()了,程序人员理解上容易发生错误。
所以,根据返回值来区分重载方法是行不通的。