重写(Override)和重载(Overload)的区别

重写(Override)

定义

重写是子类对父类的非静态,非private,非final允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写!

class Animal{
   public void move(){
      System.out.println("动物可以移动");
   }
}
 
class Dog extends Animal{
   public void move(){
      System.out.println("狗可以跑和走");
   }
}
 
public class TestDog{
   public static void main(String args[]){
      Animal a = new Animal(); // Animal 对象
      Animal b = new Dog(); // Dog 对象
 
      a.move();// 执行 Animal 类的方法
 
      b.move();//执行 Dog 类的方法
   }
}

实例编译运行结果为:

重载(Overload)

定义

重载(overloading) 是方法在一个类里面或在一个子类里被重载,方法名字相同,而参数不同。返回类型可以相同也可以不同。

每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表。

最常用的地方就是构造器的重载。

构造函数的重载:只需要看参数即可,如果想在一个构造方法中调用另一个构造方法,那么可以使用this()的方法调用,this()括号中的参数表示目标构造方法的参数,this()必须要作为构造方法的第一跳语句,换句话说,this()之前不能有任何可执行的代码。

class Animal1{


    String color;
    public void move(){

        System.out.println("动物可以移动");
    }
    public int move(int a){
        System.out.println("调用重载方法1");
        return 1;
    }
    public void move(String color){
        System.out.println("颜色为"+color+"的动物在移动。");
    }
    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }

}






public class TestDog{
    public static void main(String args[]){
        Animal1 c = new Animal1();//Animal对象
        c.move("红色");
        c.move(1);
    }
}

实例编译运行结果为:

 

 重写重载之间的区别

区别点重写重载
参数列表必须改必须不变
返回类型        可以改必须不变
异常可以改可以减少或删除,一定不能抛出新的或者更广的异常

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值