java类中重载_java中重载一定在一个类里面吗?

虽然这些概念在翻译成中文的过程中,有很多不同的翻译方式

但本质上只有两种说法,就是Override和Overload

其中,Overload一般都被翻译成重载

而Override的翻译就乱七八糟了,所谓覆盖、覆写、重写、改写指的其实都是这个意思

那么为什么会有这么多名词,而不能统一一下呢?

打一个最简单的比喻吧,为什么老婆这个词有这么多叫法?而不能统一一下呢?

这个原因就不用我说了吧呵呵

所以,不管这个单词被翻译成多少种说法

在你学习的过程中,你只需要按照一种你喜欢的说法来使用就可以了

而对于其他的说法,你只需要在看到别人使用的时候

能够知道这跟你使用的某个说法的含义是一样的,就可以了

所以,在这里这个问题可以简化为

Overload和Override定义和区别是什么?

为了方便讲解,在这里我将使用“重载”和“覆盖”这两个名词

其中重载就是Overload,覆盖就是Override,你心里明白就可以了~

下面给出最基本的重载和覆盖的定义吧:

在同一个类中,如果定义了多个方法名相同,但是可以通过参数进行区分的方法,那么这些方法就可以称之为重载

在子类中,如果定义了方法名、参数和返回值都与父类完全相同的方法,那么子类中的这个方法就可以称之为覆盖了父类中的方法

所以,你只需要严格记住以上两个定义,就很容易区分重载和覆盖了

下面就结合上面的定义,再来看看你给出的代码吧:[code=java]class SuperClass {

public void method(int x, double y) {

System.out.println("我是父类SuperClass");

}

public void method(int x) {

System.out.println("我肯定是重载了");

}

}[/code]在这里可以看出,由于method(int x)和method(int x, double y)的方法名相同,但是参数可以区分

所以这两个method就是重载关系

再来看下面这段代码:[code=java]class SubClass1 extends SuperClass {

public void method(int x, double y) {

System.out.println("我重定义了父类SuperClass,即覆盖了父类方法");

}

}[/code]在这里可以看出,由于SubClass1继承了SuperClass

并且SubClass1中定义的void method(int x, double y)这个方法

和SuperClass中定义的void method(int x, double y)方法的方法名、参数和返回值完全相同

所以子类中的这个method就是覆盖了父类中的这个method

好,如果对上面的两段代码的解释你能够看懂的话

那我也来给出一段代码吧,看你能不能看的懂~[code=java]class SubClass3 extends SuperClass {

public void method(int x, double y) {

System.out.println("我是子类Subclass3");

}

public void method(int x) {

System.out.println("我是重载还是覆盖呢?");

}

}[/code]在这段代码中,我们可以看到

由于在SubClass3中定义了两个方法名都为method的方法,所以它们的关系应该是重载

而由于在SuperClass中也定义了两个与它们完全相同的方法,所以它们和SuperClass中方法的关系又是覆盖

那么它们究竟是重载还是覆盖呢?其实在上面的这两句话中,我已经给出答案了

在SubClass3中,这两个方法的关系是重载

和SuperClass中,的这两个的方法的关系是覆盖

所以,你既可以把它们看成是重载,又可以看成是覆盖

区别只在于,你是从什么角度去看它们的

好了,关于重载和覆盖就解释这么多吧

对于为什么要有这两种概念,以及如何去应用它们,这个就只能靠你以后慢慢去体会了呵呵

Tips:

在这里再补充一点小小的细节吧:

什么叫可以通过参数进行区分呢?主要有以下三种区分方式:

1、参数的数量不同,例如method(int)和method(int, int)

2、参数的类型不同,例如method(int)和method(String)

3、参数的顺序不同,例如method(int, String)和method(String, int)

*注意,参数的顺序不同的前提必须是顺序不同的几个参数类型不能一样

例如如果是method(int, int)的话,那么不管怎么改变顺序都无法进行区分的

摘自:原文中一条评论

原文出处:http://bbs.itheima.com/thread-1379-1-1.html

java中重载(overload)与重写(override)的区别

方法重载(overload): 方法重载就是在一个类中可以创建多个方法,它们具有相同的名字,但是具有不同的参数和不同的定义,调用方法时通过传递给它们的不同参数个数和参数类型来决定具体使用哪个方法,这就 ...

Java中的不可变类理解

一.Java中的不可变类 不可变类(Immutable Objects):当类的实例一经创建,其内容便不可改变,即无法修改其成员变量. 可变类(Mutable Objects):类的实例创建后,可以修 ...

JAVA中封装JSONUtils工具类及使用

在JAVA中用json-lib-2.3-jdk15.jar包中提供了JSONObject和JSONArray基类,用于JSON的序列化和反序列化的操作.但是我们更习惯将其进一步封装,达到更好的重用. ...

Java中直接输出一个类的对象

例如 package com.atguigu.java.fanshe; public class Person { String name; private int age; public Strin ...

Java中Date和Calender类的使用方法

查看文章     Java中Date和Calender类的使用方法 2009-10-04 20:49 Date和Calendar是Java类库里提供对时间进行处理的类,由于日期在商业逻辑的应用中占据着 ...

Java 中的静态嵌套类和非静态嵌套类

Java 中的静态嵌套类和非静态嵌套类 术语:嵌套类分为两类:静态嵌套类和非静态嵌套类.声明 static 的嵌套类称为静态嵌套类,非静态嵌套类也称为内部类. class OuterClass { p ...

Java中如何查看一个类依赖的包

Java中如何查看一个类依赖的包 如图, 我如何知道JSONArray是依赖的哪一个包呢,这里有两个json-lib包?   测试语句:   public static void main(Strin ...

问题009:java当中的关键字有哪些?在Editplus文本编辑软件中是什么颜色的?java当中的标识符有什么要求?Java中注释分为几类?

(1) public 公共的,表示访问的权限 (2) private 私有的,表示一种访问权限 (3) class 类关键字,表示定义一个类 java中的关键字都是大写的还是小写的?小写的,在Edit ...

Java 中常见的 final 类

Java 中常见的 final 类 java.lang 包 public final class Boolean extends Object implements Serializable, Com ...

随机推荐

Sap 常用Function 说明

函数名 描述 SD_VBAP_READ_WITH_VBELN 根据销售订单读取表vbap中的信息EDIT_LINES 把READ_TEXT返回的LINES中的行按照TDFORMAT=“*”重新组织VI ...

go sample-base64

GoSample-base64 package mainimport ( "encoding/base64" "fmt")func base64Encode(s ...

DB2数据库性能优化介绍

DB2数据库性能优化介绍 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs 前段时间,我从CSDN得到了这本书

TestNG中的DataProvider返回Iterator<Object[]>的妙用

TestNG中使用DataProvider有个好处,就是: 1. 在执行用例的时候dataProvider迭代中的每组数据都是作为一个用例执行 2. 在测试数据有规律的情况下,免去了添加testXML ...

China Tightens Recycling Import Rules

China Tightens Recycling Import Rules We have all seen the pictures of cities in China with air poll ...

使用 NPOI 导出 Excel 文件

[NPOI简介] NPOI 是 POI 项目的 .NET 版本.POI是一个开源的Java读写Excel.WORD等微软OLE2组件文档的项目. 使用 NPOI 你就可以在没有安装 Office 或者 ...

iOS 添加第三方字体

有时候根据UI的设计,我们需要添加第三方字体到工程中,实现特殊的效果. 一,把第三方字体包导入工程 二,在info.plist文件中添加Fonts provided by application 类型 ...

SAS对数据变量的处理

SAS对数据变量的处理 在使用DATA步基于已经存在的数据集生成新数据集时,可以指定在新数据集中不需要包含的变量而仅读取其他变量,或者指定仅需要在 新数据集中包含的变量.该功能可以通过DATA步中的S ...

xpath注入详解

0x01 什么是xpath XPath 即为 XML 路径语言,是 W3C XSLT 标准的主要元素,它是一种用来确定 XML(标准通用标记语言的子集)文档中某部分位置的语言. XPath 基于  ...

Chained Declustering

此论文描述了在无共享架构的多处理器机器上的数据库系统的数据冗余分布方法.该方法提高了系统的可用性,同时在单节点故障的情况下,可以很好的实现负载均衡.以下是论文的一些摘要,详细可以参见论文原 ...

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值