重载
发生在同一个类中,方法名相同 ,参数类型不同,个数不同,方法返回值和权限修饰符可以不同。
举个栗子:下边的getSum就是一些重载过的方法
public class OverLoadTest {
public static void main(String[] args) {
OverLoadTest test=new OverLoadTest();
test.getSum(1,2);
test.getSum(1.0,1.0);
}
//如下四个方法构成了重载
public void getSum(int i ,int j){
System.out.println(i+j);
}
public void getSum(double d1,double d2){
System.out.println(d1+d2);
}
public void getSum(String s,int i){
System.out.println(i+s);
}
public void getSum(int i,String s){
System.out.println(i+s);
}
}
重写
重写:子类继承父类之后,可以对父类同名同参数的方法进行覆盖操作。
①:子类重写的方法名和形参列表与父类被重写的方法名和形参列表相同
②:子类重写的权限修饰符要不小于父类的权限修饰符
特殊情况:子类不能重写父类中声明为private权限的方法
③:返回值类型
父类被重写的方法的返回值类型型是void,则子类重写的方法的返回值类型也只能是void
父类被重写的方法的返回值类型是A类型,则子类重写的方法的返回值类型可以是A类或者A类的子类
父类被重写的方法的返回值类型是基本数据类型,则子类重写 的方法的返回值类型必须是相同的基本数据类型
④:子类重写的方法抛出的异常类型不大于父类被重写的方法抛出的异常类型
一句话说就是:重写是子类对父类的允许访问的方法进行重新编写,发生在子类中,方法名和参数列表必须相同,返回值范围小于等于父类,抛出的异常小于等于父类,访问修饰符大约等于父类。
在举个简单的小栗子:
先创建一个父类其中声明一个方法
public Class animal{
public void eat(){
System.out.println("动物吃什么");
}
}
在创建一个子类在其中声明一个与父类的方法名和形参列表相同的方法
public Class cat extends animal{
@Override
public void eat(){
System.out.println("小猫吃鱼呀!");
}
}
public Class AnimalTest{
public static void main(String[] args) {
Cat cat = new Cat();
cat.eat();
}
}
运行结果是
重写以后,当创建子类对象以后,通过子类对象调用父类中同名同参的方法时,实际执行的是子类重写父类的方法
如果上述中有什么不对的地方欢迎各位大佬指出,还有不要嫌弃例子简单。(ノへ ̄、)