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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wu_wxc/article/details/51457528

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

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

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

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

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

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

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

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

Java 覆写(Override)详解

一、覆写概念 既然现在出现了继承的关系,那么就存在了子类和父类的联系,而在子类之中有可能定义和父类完全相同的方法或属性的名称,这个时候就称为覆写了。 二、方法的覆写 当子类定义了和父类在方法名称...
  • wei_zhi
  • wei_zhi
  • 2016-10-11 13:13:03
  • 2999

JAVA中的基础-----重载与重写(覆盖)的区别:overload与override

JAVA中多态的实现机制主要通过overload和override实现。 1)方法的重载:简言之,就是指同一个类有多个同名的方法,这些方法拥有不同的参数(同名不同参)。可以认为是类中方法的多态性,也称...
  • Emira_J
  • Emira_J
  • 2016-04-20 10:21:13
  • 769

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

Java中重载(overload)与覆盖(override)的区别
  • renlwkh
  • renlwkh
  • 2015-04-04 00:14:13
  • 644

Override和Overload的区别

Override和Overload的区别?Overloaded的方法是否可以改变返回值的类型?      (1)方法的重写Override和重载Overload是Java多态性的不同表现。 ...
  • chwshuang
  • chwshuang
  • 2015-07-18 16:39:53
  • 887

方法的重写 Override

父类与子类之间的多态性,对父类的函数进行重新定义。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。在Java中,子类可继承父类中的方法,而不需要重新编写...
  • lp1791803611
  • lp1791803611
  • 2016-05-11 15:56:19
  • 165

方法重写(override)原则

方法的重写(override)两同两小一大原则: 1.方法名相同,参数类型相同 2.子类返回类型小于等于父类方法返回类型 3.子类抛出异常小于等于父类方法抛出异常 4.子类访问权限大于等于父类...
  • u013252047
  • u013252047
  • 2017-11-04 20:22:14
  • 82
收藏助手
不良信息举报
您举报文章:Java重写Override和重载Overload
举报原因:
原因补充:

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