Java重写Override和重载Overload

原创 2016年05月19日 22:05:26

转载请标明出处:http://blog.csdn.net/wu_wxc/article/details/51457528
本文出自【吴孝城的CSDN博客】

重写是子类对父类中允许访问的的方法的重新编写
重载是同一类中方法名相同,但返回值类型或参数有所不同的方法的重新加载

Override(重写)

package cn.wuxiaocheng;

class Animal {
    public void eat() {
        System.out.println("动物都需要吃东西");
    }
}

class Dog extends Animal {
    // 重写父类方法
    @Override
    public void eat() {
        System.out.println("狗喜欢啃骨头");
    }
}

public class Test {

    public static void main(String[] args) {
        Dog dog = new Dog();
        dog.eat();
    }
}

结果如图
这里写图片描述

@Override表明这个方法是重写其父类方法,没有它不会报错,但是没有它时,下面重写的方法名写错时系统不会报修。

重写的注意事项

1、声明为final的方法不能被重写
2、声明为static的方法可以被再次声明,但不能被重写
3、子类和父类在同一包中时,子类可以重写父类中除了声明为private或final的其他所有方法
4、子类和父类不在同一包中时,子类只能重写父类中声明为public或protected的非fnial方法
5、构造方法不能被重写

Overload(重载)

package cn.wuxiaocheng;

class MyOverloading {
    // 没有参数
    public void people() {
        System.out.println("没有参数");
    }

    // 参数为String
    public void people(String name) {
        System.out.println(name);
    }

    // 参数为int,返回int类型的值
    public int people(int age) {
        System.out.println(age);
        return age;
    }

    // 参数为String, int
    public void people(String name, int age) {
        System.out.println("name:" + name + "," + "age:" + age);
    }

    // 参数为int, String
    public void people(int age, String name) {
        System.out.println("age:" + age + "name:" + name);
    }
}

public class Test {

    public static void main(String[] args) {
        MyOverloading myOverloading = new MyOverloading();
        myOverloading.people();
        myOverloading.people("名字");
        myOverloading.people(20);
        myOverloading.people("名字", 20);
        myOverloading.people(20, "名字");
    }
}

结果如图
这里写图片描述

重载和重写的区别

区别点 重载方法 重写方法
方法名 相同 相同
返回值类型 可以修改 相同
参数 参数不同或参数顺序不同 相同
访问修饰符权限 没有要求 被重写的方法权限不得比父类严格
范围 同一类中 在继承中

访问权限比较

修饰符 当前类 同一包 子孙类 全可见
private
default
protected
public

其中什么都没写的就是default,有的也叫friendly

版权声明:本文为博主原创文章,未经博主允许不得转载。

java中方法重写(Override)与方法重载(Overload)的区别

虽然知道方法重写与方法重载,但总是会忘记具体的区别以及一些细节,所以干脆就写一篇博客记录下来吧。 方法重写(Override):        在Java中,子类可继承父类中的方法,而不需要重新编写相...
  • BeauXie
  • BeauXie
  • 2016年10月31日 20:16
  • 1652

面向对象重写(override)与重载(overload)区别

一、重写(override) override是重写(覆盖)了一个方法,以实现不同的功能。一般是用于子类在继承父类时,重写(重新实现)父类中的方法。 重写(覆盖)的规则: 1、重写方法的参数列表...
  • u013754847
  • u013754847
  • 2016年03月24日 10:54
  • 1937

重载overlord与重写override的区别

重写只存在于子类与父类中,重载存在于一个类中。具体区别如下: 一、重写(override)override是重写(覆盖)了一个方法,以实现不同的功能。一般是用于子类在继承父类时,重写(重新实现)父类...
  • cf643487053
  • cf643487053
  • 2016年12月07日 10:28
  • 1082

重载(overload)和覆盖(override)有什么区别(终结篇)

重载(overload)和覆盖(override)是Java多态性的不同表现方式。其中,重载是在一个类中多态性的一种表现,是指在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,...
  • Harrytsz
  • Harrytsz
  • 2017年03月13日 16:20
  • 242

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

重载(Overload)重载是指在一个类里面,方法名相同,参数不同。java中有构造器重载和方法重载(意义是一样的,叫法不同)public class Car { private String...
  • u010958620
  • u010958620
  • 2016年03月27日 16:52
  • 974

C# 重载(overload)与重写(override)

1 重写(override) 重写(overload)指子类方法对基类虚方法的重写。当基类中的方法被声明为虚方法(使用关键字virtual),该方法可以在任何子类中被重写。若子类需要使用父类中原有的...
  • tiana0
  • tiana0
  • 2013年11月17日 13:29
  • 2990

java中Overload(重载)和Override(重写、覆盖)

面试题:重载(Overload)和重写(Override)的区别。重载的方法能否根据返回类型进行区分? 答:方法的重载和重写都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运...
  • u010575093
  • u010575093
  • 2016年02月24日 13:16
  • 626

C++重写(override)、重载(overload)、重定义(redefine)以及虚函数调用机制【个人总结】

对于C++中经常出现的函数名称相同但是参数列表或者返回值不
  • loveRooney
  • loveRooney
  • 2014年07月30日 22:49
  • 4402

方法的重载(overload)和覆盖(override)

Java中重载(overload)与覆盖(override)的区别
  • renlwkh
  • renlwkh
  • 2015年04月04日 00:14
  • 596

【VB.NET】——方法重载和方法重写的区别

前言         第一次接触到这个问题的时候还是在看C#视频的时候,当时并不是对比出现的这个问题,再一次就是同学问的我,因为在学习时就感觉这两个问题区分的挺清楚的,有什么好争议的呢,当时...
  • wangjinlong_
  • wangjinlong_
  • 2016年02月18日 17:19
  • 1656
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java重写Override和重载Overload
举报原因:
原因补充:

(最多只允许输入30个字)