Java中重载(Overload)与重写(Override)的区别

Java中重载(Overload)与重写(Override)的区别

重写(Override)

重写,即子类对自己能够访问父类的方法进行重写编写,但要求方法的形参和返回值不能改变。重写能够使得子类对根据需求,实现更具体的行为。

举个例子:

class Animal {
    public void 新陈代谢{
        System.out.println("动物能够进行新陈代谢");
    }
}

class Dog extends Animal {
    public void 新陈代谢 {
        System.out.println("狗能新陈代谢");
    }
}

在上面这个例子中,Dog继承了Animal,并且对父类的新陈代谢方法进行重写,实现了自己的新陈代谢方法

方法的重写还有一些更具体的规则,如下

  • 访问权限不能比父类中被重写的方法的访问权限更低。例如:如果父类的一个方法被声明为 public,那么在子类中重写该方法就不能声明为 protected

  • 父类的成员方法只能被它的子类重写

  • 声明为 final 的方法不能被重写

  • 声明为 static 的方法不能被重写,但是能够被再次声明

  • 构造方法不能被重写

重载(Overload)

重载(Overload)要求方法名相同,但参数不同,返回值可以相同也可以不相同

再举个例子

public class Overload {
    public void test() {
        System.out.println("我没有传入参数,也没有返回值");
    }
    public int test() {
        System.out.println("我没有传入参数,但是我返回了一个值");
        return 1;
    }

    public void test(int a) {
        System.out.println("我被传入了一个参数" + a);
    }

    public String test(int a, String s) {
        System.out.println("我有一个参数 " + a + "还返回 " + s);
        return s;
    }
    public String test(String s, int a) {
        System.out.println("我有一个参数 " + a + "还返回 " + s + "但参数顺序不一样");
        return s;
    }
}

希望这篇文章对你有所帮助

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容