方法的重载与重写

一、重载

1.什么是重载?

在Java中,如果多个方法的名字相同,参数列表不同,则称该几种方法被重载了。 通俗易懂的理解就是一个词语有多重意思。
public class TestMethod {
public static void main(String[] args) {
add(1, 2); // 调用add(int, int)
add(1.5, 2.5); // 调用add(double, double)
add(1.5, 2.5, 3.5); // 调用add(double, double, double)
}
public static int add(int x, int y) {
return x + y;
}
public static double add(double x, double y) {
return x + y;
}
public static double add(double x, double y, double z) {
return x + y + z;
}
}

上述代码当中的add就称为被重载了,因为三种add方法的名称都相同,都叫add,但是参数类型又不同。

注意:

1. 方法名必须相同。
2. 参数列表必须不同(参数的个数不同、参数的类型不同、类型的次序必须不同)。
3. 与返回值类型是否相同无关(int,double等)。

2.为什么用重载(重载的意义)?

在方法大体步骤相同,只是数据类型不同(都是进行加分、除法......)时,运用重载可以减少多次修改来提供多个不同方法名这一步骤(不用不断改写为add2,add3,add4......),这样可以减少我们写代码的麻烦!!(父类和子类中构成重载的方法,直接可以通过参数列表区分清访问父类还是子类方法)

3.怎么写重载?

修饰符  返回值类型  方法名(参数列表){

       方法体代码;

    (return  返回值);

}

例如:(注意重载的注意事项)

public static int add(int x, int y) {
return x + y;
}
public static double add(double x, double y) {
return x + y;
}
public static double add(double x, double y, double z) {
return x + y + z;
}

二、重写

1.什么是重写?

在Java中,如果多个方法的名字相同(父类与子类当中),参数类型也相同,则称该几种方法被重写了。在继承这一方面的知识当中,会遇到子类继承父类的变量及方法,如果此时子类与父类的方法名称与参数类型也相同,那么就会遇到所谓的重写。

注意:

1.重写只发生在子类当中,同类不存在。

2.重写指的是两个方法的方法名、返回值类型、参数类型和个数相同(子类重写父类)。

3.若子类中的方法与父类中的某一方法具有相同的方法名、返回类型和参数列表时,也就是重写时,优先访问子类的方法!!这一过程叫做运行时绑定或动态绑定!如果一定要访问父类的方法,需用到super关键字。

4.子类的访问权限(修饰符的选择)必须大于等于父类!

5.方法的返回值可以不同,但必须是父子类关系,除此以外必须相同!

6.构造方法和某些限定修饰符不能重写!

public class Base {
    int a;
    int b;
    public void methodA(){
        System.out.println("Base中的methodA()");
    }
    public void methodB(){
        System.out.println("Base中的methodB()");
    }
}
public class Derived extends Base{
    int a; // 与父类中成员变量同名且类型相同
    char b; // 与父类中成员变量同名但类型不同
    // 与基类中methodB()构成重写
    public void methodB(){
        System.out.println("Derived中的methodB()方法");
    }
    public void methodC(){
// 对于同名的成员变量,直接访问时,访问的都是子类的
        a = 100;
        b = 101;
// 访问父类的成员变量时,需要借助super关键字
        super.a = 200;
        super.b = 201;
        methodA(); 
// 如果在子类中要访问重写的基类方法,则需要借助super关键字
        methodB(); // 直接访问,则永远访问到的都是子类中的methodA(),基类的无法访问到
        super.methodB(); // 访问基类的methodB()
    }

2.为什么用重写(重写的意义)?

重写增加了代码的复用性,使代码效率更高,且子类继承了父类的内容,同时子类还可以自己新增所需内容,具有扩展性。

3.怎么写重写?

大致如上述的代码段:

修饰符    子类{

      方法体代码:

}

修饰符  子类 extends  父类  {

       方法体代码:

       调用方法(直接调用是子类的方法,调用父类用super);

}

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值