到底是根据什么来区分类中重载的方法?

	A:不同的返回值类型。
B:不同的参数类型。
C:不同的访问权限。
D:不同的参数名称。

解析:

Step1.我们先在DifferentiateReload类中创建一个无参无返回值的say()方法
package components.javaTest.day1_20200822;

/**
* Question:
* 区分类中重载方法的依据是什么?
*/
public class DifferentiateReload {
public void say(){
System.out.println("A");
}
}


Step2.试着在该类中构造返回值不同的say()方法
public class DifferentiateReload {
public void say(){
System.out.println("A");
}
//新增返回值不同的say()方法
public String say(){
return "B";
}
}

此时我们可以看到编译报错了,编译器认为已经存在了say()方法,

换言之,两个方法无法被区分开来(我们可以想象一下,在调用该类的两个方法new DifferentiateReload().say(),

此时根本不需要知道say()返回的内容,系统也是脑壳疼不知道您是在调用哪一个,所以

  	A:不同的返回值类型。--->无法区别类中的重载方法。

Step3.在该类中构造访问权限不同的say()方法
package components.javaTest.day1_20200822;

/**
* Question:
* 区分类中重载方法的依据是什么?
*/
public class DifferentiateReload {
public void say(){
System.out.println("A");
}
//新增权限不同的say()方法
private void say(){
System.out.println("C");
}
}

同样的,提示方法已经存在了,编译报错,

不同权限,无非是控制不同地方的调用,举个例子,

如果都在DifferentiateReload类中调用,

那么public、private、protected对应调用者都是没有区别,

系统还是无法得知你想调用的到底是哪个方法,所以

  	C:不同的访问权限。--->无法区别类中的重载方法。

Step4.在该类中构造参数名称不同的say()方法 在这里我们先后创建两个有参,且参数类型都为int,同时参数名称不同的say()
package components.javaTest.day1_20200822;

/**
* Question:
* 区分类中重载方法的依据是什么?
*/
public class DifferentiateReload {
public void say(int age) {
System.out.println("I'm "+ age + "old.");
}
}
package components.javaTest.day1_20200822;

/**
* Question:
* 区分类中重载方法的依据是什么?
*/
public class DifferentiateReload {
public void say(int age) {
System.out.println("I'm "+ age + "old.");
}
//新增一个有参,且参数类型为int,同时参数名称不同的say()
public void say(int money) {
System.out.println("I hava "+ money+ "yuan." );
}
}

可以看到,编译器在写say(int money)方法的时候,认为say(int)方法已经存在了。

很显然,对于编译器,你传一个int类型的年龄,和一个int类型的钞票其实对它来说没两样,

只要int类型的,我管你是什么含义,照收即可。也就是说,当你调用new DifferentiateReload(1)方法时,

编译器也不知道你需要调用哪个方法,所以

		D:不同的参数名称。--->无法区别类中的重载方法。

Step5.在该类中构造参数类型不同say()方法

注意:参数类型不同可以有两种理解:

一、在参数个数、参数所处位置顺序相同的情况下,其对应的参数对象的类型不同

二、参数个数、参数所处位置的顺序、参数的类型其中一个或者多个不同

不管是哪种理解,不同的参数类型,就能正确地区分类中的重载方法,下面控制台打印出的就是调用多个say重载方法的输出结果。

package components.javaTest.day1_20200822;

/**
* Question:
* 区分类中重载方法的依据是什么?
*/
public class DifferentiateReload {
public static void main(String[] args) {
say();
say(11);
say("11");
say(11, "11");
say("11", 11);
} public static void say() {
System.out.println("调用了无参无返回值的say");
} public static void say(int count) {
System.out.println("调用了参数为int无返回值的say");
} public static void say(String msg) {
System.out.println("调用了参数个数相同,类型不同,无返回值的say");
} public static void say(int count, String msg) {
System.out.println("调用了参数个数不同,类型不同,无返回值的say");
} public static void say(String msg, int count) {
System.out.println("调用了参数个数相同,类型相同,顺序不同,无返回值的say");
}
}

所以区分类中重载方法的依据是:

	B:不同的参数类型。


非  淡  泊  无  以  明  志

非 宁 静 无 以 致 远 !

java面试题0001-区分类中重载方法的依据是什么?的更多相关文章

  1. 【Java面试题】解释内存中的栈(stack)、堆(heap)和静态存储区的用法

    Java面试题:解释内存中的栈(stack).堆(heap)和静态存储区的用法 堆区: 专门用来保存对象的实例(new 创建的对象和数组),实际上也只是保存对象实例的属性值,属性的类型和对象本身的类型 ...

  2. 【转】常见Java面试题 – 第三部分:重载(overloading)与重写(overriding)

    ImportNew注: 本文是ImportNew编译整理的Java面试题系列文章之一.你可以从这里查看全部的Java面试系列. 这篇文章介绍的常见面试题是关于重载(overloading)方法和重写( ...

  3. Java面试题全集(上-中-下)及Java面试题集(1-50/51-70)

    阅读量超百万级的文章,收藏并分享一下.感谢原创作者的总结 对初中级java开发人员有特别大的帮助,不论是技术点面试还是知识点总结上. Java面试题全集(上):     https://blog.cs ...

  4. 四. Java继承和多态3. 继承中的方法的覆盖和重载

    在类继承中,子类可以修改从父类继承来的方法,也就是说子类能创建一个与父类方法有不同功能的方法,但具有相同的名称.返回值类型.参数列表. 如果在新类中定义一个方法,其名称.返回值类型和参数列表正好与父类 ...

  5. 如何在WebService中重载方法

    1. 本来在WebService中这样写的重载方法,如下所示: [WebService(Namespace = "http://tempuri.org/")]    [WebSer ...

  6. java面试题之Thread类中的start()和run()方法有什么区别

    start()方法被用来启动新创建的线程,而且start()内部调用了run()方法, 区别: 当你调用run()方法的时候,只会是在原来的线程中调用,没有新的线程启动: start()方法才会启动新 ...

  7. java面试题之spring aop中jdk和cglib哪个动态代理的性能更好?

    在jdk6和jdk7的时候,jdk比cglib要慢: 在jdk8的时候,jdk性能得到提升比cglib要快很多: 结论出自:https://www.cnblogs.com/xuliugen/p/104 ...

  8. Java基础-重写-子类重写父类中的方法后执行情况

    代码 public class Test { public static void main(String[] args) { Shape shape = new Circle(); System.o ...

  9. java面试题----IO流种类及接口方法

    java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类? Java中的流分为两种,一种是字节流,另一种是字符流,分别由四个抽象类来表示(每种流包括输入和输出两种 ...

随机推荐

  1. 查看 __class__属性

    查看complex的__class__属性 a = 5+2j print(a.__class__) print(a.__class__.__class__) ''' <class 'comple ...

  2. js POST调用api接口时,由于OPTIONS请求导致服务器异常

    1.学习心得 当你搜到这个问题时,就表示你已经知道了脚本POST请求接口时,会先执行一次OPTIONS类型的请求.至于为什么会这样,在此就不做描述了,想知道的小伙伴可以查一下:本文主要将我在现实中遇到 ...

  3. PHP tmpfile() 函数

    定义和用法 tmpfile() 函数以读写(w+)模式创建一个具有唯一文件名的临时文件. 语法 tmpfile() 提示和注释 注释:临时文件会在文件关闭后(用 fclose())或当脚本结束后自动被 ...

  4. PDOStatement::fetch

    PDOStatement::fetch — 从结果集中获取下一行(PHP 5 >= 5.1.0, PECL pdo >= 0.1.0) 说明 语法 mixed PDOStatement:: ...

  5. JAVA设计模式 5【结构型】代理模式的理解与使用

    今天要开始我们结构型 设计模式的学习,设计模式源于生活,还是希望能通过生活中的一些小栗子去理解学习它,而不是为了学习而学习这些东西. 结构型设计模式 结构型设计模式又分为 类 结构型 对象 结构型 前 ...

  6. python数据可视化编程实战PDF高清电子书

    点击获取提取码:3l5m 内容简介 <Python数据可视化编程实战>是一本使用Python实现数据可视化编程的实战指南,介绍了如何使用Python最流行的库,通过60余种方法创建美观的数 ...

  7. ElasticSearch添加索引

    1. 编写索引内容 节点解释: settings:配置信息 "number_of_replicas": 0  不需要备份(单节点的ElasticSearch使用) "ma ...

  8. 使用Flask开发简单接口(5)--数据加密处理

    前言 在之前开发的接口中,我们设计把用户信息存储到数据库时,没有对数据进行加密处理,为了提高下安全性,我们今天就学习下,如何对用户数据进行加密加盐处理. MD5加密加盐 MD5加密 MD5是常用的一种 ...

  9. 【BZOJ2724】蒲公英 题解(分块+区间众数)

    题目链接 题目大意:给定一段长度为$n$的序列和$m$次询问,每次询问区间$[l,r]$内的最小的众数.$n\leq 40000,a_i\leq 10^9$ --------------------- ...

  10. cocos2d-x_下载游戏引擎并创建第一个项目

    我是一名小白. 下载并创建游戏项目 第一步:去官网下载cocos2d-x http://www.cocos.com/download 第二步:将安装包里边的 setup.py 拖进命令行点击回车键 , ...