方法重载与方法重写

方法重载

目的:为了解决两个或多个功能相同的不同方法在命名时出现多个不同方法名的问题,重载把一组功能相同的方法命名为同一个方法名,这样就可以减轻开发者在方法的命名上的痛苦。

什么是方法重载

同一个类中, 具有相同方法名的一组方法, 但是参数列表不一样的这一组方法称为方法重载

参数列表不一样:

①参数个数不一样

 

对应位置的参数类型不一样

 

无关项:

①参数名

 

②返回值类型

 

方法重写

目的:子类实现父类中共有资源以外的特有资源,也就是对父类方法的拓展延伸

什么是方法重写

子类中的某个(多个)方法与父类中的某一个(多个)方法的返回值、方法名、参数列表相同,但是方法体不一样这就是方法重写。

public class Student {//创建父类Student类
    private String name;//定义学生姓名内部属性
​
    public String getName() {
        return name;
    }
​
    public void setName(String name) {
        this.name = name;
    }
​
    public void study(){//创建父类study()方法
        System.out.println("Student类中学习方法,学生名字是"+name);
    }
}
public class UnStudent extends Student{//创建大学生类UnStudent子类继承与父类Student类
    public void study(){//创建父类study()方法
        System.out.println("我是来自广西科技大学的一名学生,名字叫:"+ getName());
    }
}
public class TestStudent {
    public static void main(String[] args) {
        UnStudent unStudent = new UnStudent();
        unStudent.setName("小麦麦");
        unStudent.study();
    }
}
​

输出的结果就是调用UNStudent中的方法调用的结果。

 

应很好理解:如果子类重写了父类中的方法,调用的就是子类中的实现,否则就调用父类中的方法----你有能力把爸爸那里继承的东西弄得更大更好,当然也就用的是发扬光大后的,但是你没有能力去发扬,只能还是用爸爸继承下的东西.

注意事项:

1) 方法的重写不能发生在统一各类中,也就是只有子类能够重写父类的方法

2)子类重写父类方法时,方法名、返回类型以及参数列表必须相同,才能覆盖原有方法

3) 子类的权限大于或等于父类的权限(修饰符等级高低:private < 默认修饰符 < protected < public)

特殊情况:子类不能重写父类声明为private权限的方法。

方法重载与方法重写的区别

1)定义不同:重载是定义相同的方法名,参数不同,是两个不同的方法;重写是子类对父类方法的修改或者延 伸仍是同一个方法

2)范围不同:重载只能在同一个类中实现;重写是子类与父类之间

3)多态不同:重载是编译时的多态性,重写是运行时的多态性

4)返回不同:重载对返回类型没有要求,而重写要求返回类型,有兼容的返回类型

5)参数列表不同:重载的参数个数、参数类型、参数顺序可以不同,而重写父子方法参数必须相同

6)修饰不同:重载对访问修饰没有特殊要求,重写访问修饰符的限制一-定要大于被重写方法的访问修饰符