【答疑解惑】Java中重载和重写的区别

今天群里有网友搞不清楚一个问题:

重载和重写属于Java面向对象中多态基础知识点,下面就给大家说说多态。

什么叫做多态?

多态指的是在继承关系中子类继承父类的行为,这种行为在子类具体实现时可以是不一样的。比如动物这一父类中有move()方法,在鸟类子类中和鱼类子类中move的实现是不一样的。在Java中多态是通过重写(@Override:把父类的方法重新实现)和重载(@Overload:通过方法参数的不同在子类中来重新创建名字相同的方法)来实现的。

重写:

重写(Override)是父类与子类之间多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Override)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。

重载:

重载(Overload)是一个类中多态性的一种表现。如果在一个类中定义了多个同名的方法,它们参数列表不同,则称为方法的重载(Overload)。

比如父类:

public abstract class Animal { public abstract void move(String string); public void cry() { System.out.println("Animal is cry!"); } }

在子类中:

public class Bird extends Animal { @Override public void move(String string) { System.out.println("Bird is move! " + string); } @Override public void cry() { super.cry(); System.out.println("Bird is crying!"); } public void eat() { System.out.println("Bird is eatting !"); } public void eat(String food) { System.out.println("Bird is eatting " + food + " !"); } }

对于上面的代码你能分清楚哪些方法是重载哪些是重写吗?

原文发布于微信公众号 - 程序员互动联盟(coder_online)

原文发表时间:2015-09-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Code_iOS

Objective-c 知识总结 -- 继承

观察发现,它们属性和方法声明是相同的,都有 填充色(fillcolor)、尺寸+位置(bounds)、绘制方法;

751
来自专栏从流域到海域

《Java程序设计基础》 第8章手记Part 1

本章主要内容 Part 1 - 子类的创建 - 在子类中访问父类的成员 - 覆盖父类的方法 - …… 本章主要讲继承、抽象类和接口,这...

1855
来自专栏Python

flask-sqlalchemy 一对一,一对多,多对多操作

先进行如下操作: from flask import Flask from flask.ext.sqlalchemy import SQLAlchemy app...

3315
来自专栏腾讯Bugly的专栏

小程序组件化框架 WePY 在性能调优上做出的探究

导语 性能调优是一个亘古不变的话题,无论是在传统H5上还是小程序中。因为实现机制不同,可能导致传统H5中的某些优化方式在小程序上并不适用。因此必须另开辟蹊径找出...

4274
来自专栏Java技术栈

面象对象设计6大原则之三:里氏替换原则

里氏替换原则(LSP),The Liskov Substitution Principle 定义 所有引用基类的地方必须能透明地引用其子类的对象,即子类可以拓展...

2626
来自专栏Java帮帮-微信公众号-技术文章全总结

第十天 面向对象-继承抽象类【悟空教程】

1776
来自专栏微信公众号:Java团长

Java多态性理解

多态存在的三个必要条件 一、要有继承; 二、要有重写; 三、父类引用指向子类对象。

723
来自专栏Android干货

Python基础知识点

1064
来自专栏小樱的经验随笔

【python进阶】详解元类及其应用2

前言 在上一篇文章【python进阶】详解元类及其应用1中,我们提到了关于元类的一些前置知识,介绍了类对象,动态创建类,使用type创建类,这一节我们将继续接着...

2649
来自专栏Django Scrapy

多态 接口重用,一种接口,多种实现 实例 ? 多态 静态方法 @staticmethod 在函数前边加修饰@ 为了 让这个方法和类没关系 @c...

2739

扫描关注云+社区