方法的重写:也称为方法覆盖,当子类继承父类时,父类中的public和protected修饰的属性和方法可以被子类继承,但是父类中的方法在某些情况下不能够满足子类的需求,所以需要对其进行修改.
方法的重载:在一个类中我们可以定义多个相同方法名的方法,但是这些方法不能够具有相同的参数列表,这样的一种形式我们称之为方法的重载.
比较方法的重载与重写:
| 方法重写 | 方法重载 |
定义 | 对从父类继承过来的方法进行改写 | 在一个类中定义多个方法名相同的方法 |
范围 | 对于两个类而言(子类和父类) | 一个类中 |
方法名 | 子类和父类方法名一致 | 多个方法名一致 |
参数 | 子类中方法的参数要和父类一致 | 参数列表不能相同(类型,个数,顺序) |
返回值 | 子类中方法的返回值要和父类一致 | 多个方法的返回值可以相同也可以不同 |
修饰符 | 子类中修饰符不能比父类中更严格 | 无限制 |
方法重写的例子:
- public class Father {
- public void print(){
- System.out.println("这是父类中的print方法");
- }
- }
- public class Son extends Father {
- /**
- *子类对父类中继承过来的方法进行改写
- *1,方法名、参数、返回值必须和父类一致
- *2,访问权限不能比父类中对应的方法更为严格
- */
- public void print(){
- System.out.println("这是儿子重写的父类中的方法");
- }
- }
方法重载的例子:
- public class MyClass {
- private String name;
- private String pass;
- /**
- * 方法的重载是指:在一个类中可以定义多个方法名相同的方法
- * 但是这多个方法的参数列表不能相同(包括:类型不同,参数的个数不同,顺序不同)
- * 构造器也是可以重载的
- * 在方法调用的时候就是通过传递给方法的参数来区别每一个方法
- */
- public MyClass(){
- }
- public MyClass(String n){
- name = n;
- }
- public MyClass(String n ,String s){
- name = n;
- pass= s;
- }
- public void print(int c){
- System.out.println("int");
- }
- private int print(int c,int b){
- System.out.println("int");
- return 1;
- }
- void print(int c,String b){
- System.out.println("int");
- }
- protected void print(String c,int b){
- System.out.println("int");
- }
- public void print(byte b){
- System.out.println("byte");
- }
- public void print(String str){
- System.out.println("string");
- }
- public void print(long l){
- System.out.println("long");
- }
- }