详解重写和重载的区别 看完不会举报我

一、方法的重载
1.方法名相同
2.方法参数不同(个数、类型)
3.方法的返回值类型不影响重载
为了更直观的了解 我举一个代码的例子
class Test{

public static void main(String[] args) {
    int a = 10;
    int b = 20;
    int ret = add(a, b);
    System.out.println("ret = " + ret);

    double a2 = 10.5;
    double b2 = 20.5;
    double ret2 = add(a2, b2);
    System.out.println("ret2 = " + ret2);

    double a3 = 10.5;
    double b3 = 10.5;
    double c3 = 20.5;
    double ret3 = add(a3, b3, c3);
    System.out.println("ret3 = " + ret3);
}

//下面三个方法构成了重载 
// 1.他们的方法名字都相同
// 2.方法里的参数个数不一样,参数类型也不一样(有int 有double)
// 3.可以看到第一个返回值是int类型,第二个和第三个是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;
}

}

二、重写
首先要清楚 重写发生在不同类当中,且是继承关系
1.方法名相同
2.参数列表相同
3.返回值相同

class AA{

public String name;
public AA(String name) {
    this.name = name;
}

public void eat(){
    System.out.println("我是AA的" + this.name + "正在吃东西");
}

@Override
public String toString() {
    return "AA{" +
            "name='" + name + '\'' +
            '}';
}

}

class BB extends AA{

public BB(String name) {
    super(name);
}

// @Override
// public void eat(){
// System.out.println(“我是BB的” + this.name + “正在吃东西”);
// }
}

public class Test {

public static void main(String[] args) {
    AA aa = new BB("小狗");
    aa.eat();
}

}
首先我们要知道父类是不能调用子类的属性或者方法的,我们可以看到BB是继承AA的,先屏蔽BB类中重写的eat()方法,此时在Test的main方法中发生向上转型,父类调用自己的eat方法 aa.eat();
输出结果:我是AA的小狗正在吃东西
当我们解除屏蔽重写BB类中的eat()方法时,还是执行代码 aa.eat();发生运行时绑定,此时eat就是BB类重写的而不是AA父类里面的eat方法
执行结果:我是BB的小狗正在吃东西

注意:
1.如上面eat方法不能被private修饰
2.访问修饰限定符不一定相同(子类的限定要大于等于父类的)
3.静态的方法不能被重写

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值