精华内容
下载资源
问答
  • 如何区分重载的方法
    2018-08-18 18:22:11

    在区分重载方法的时候,为什么只能以类名和方法的形参列表作为标准呢?能否考虑用方法的返回值来区分呢?比如下面两个方法,虽然他们有同样的名字和形式参数,但却很容易区分他们:

    void f() {}

    int f() { return 1;}

    只要编译器可以根据语境明确判断出语义,比如在int x=f()中,那么的确可以据此区分重载方法。不过,有时你并不关心方法的返回值,你想要的是方法调用的其他效果(这常被称为“为了副作用而调用”),这时你可能会调用方法而忽略其返回值。所以,如果像下面这样调用方法:

    f();

    此时java如何才能判断该调用哪一个f()呢?别人该如何理解这种代码呢?因此,根据方法的返回值来区分重载方法时行不通的。

    更多相关内容
  • 区分重载方法

    2020-09-14 16:09:58
    区分重载方法:每个重载方法都必须有一个独一无二的参数类型列表。甚至参数顺序的不同也足以区分两个方法,不过一般情况下不这么做,因为会使代码难以维护。 基本类型的重载: 5会被当做int处理,如果有某个重载方法...
    1. 为什么要有重载:
      一个原因:方法名,不需要对每个概念都用不同的词汇
      另一个原因:构造器强制重载方法名。因为构造器的名字一定是类的名字,就只能有一个构造器名。想用多种方式创建一个对象,由于都是构造器,所以他们必须有相同的名字,即类名。而他们的参数不同,必须用到方法重载。
    2. 方法签名:方法名+参数列表
    3. 区分重载方法:每个重载方法都必须有一个独一无二的参数类型列表。甚至参数顺序的不同也足以区分两个方法,不过一般情况下不这么做,因为会使代码难以维护。
    4. 基本类型的重载:
      5会被当做int处理,如果有某个重载方法接受int,就会被调用。如果传入的数据类型(实际参数类型)小于声明的形式参数类型,实际数据类型就会被提升。char:如果找不到接受char参数的方法,char直接被提升到int。
      如果传入的实际参数大于重载方法声明的形式参数,需要类型转换,否则编译器就会报错。
    5. 以返回值区分重载方法?
      void f() {}
      int f() {return 1;}
      
      虽然这样你可以区分,比如这样int x = f()
      但如果这样呢:f()
      Java没有办法判断调用哪一个f(),别人也理解不了。所以根据方法的返回值来区分重载方法是行不通的。
    展开全文
  • 你可能会这么想:“在区分重载方法的时候,为什么只能以类名和方法的形参列表作为标准 呢?能否考虑用方法的返回值来区分呢?”比如下面两个方法,虽然它们有同样的名字和形 式参数,但你却可以很容易地区分它们:...
    你可能会这么想:“在区分重载方法的时候,为什么只能以类名和方法的形参列表作为标准
    呢?能否考虑用方法的返回值来区分呢?”比如下面两个方法,虽然它们有同样的名字和形
    式参数,但你却可以很容易地区分它们:


    void f() {} 
    int f() {}


    在类似 int x=f( )的语境中,如果编译器可根据上下文明确判断出语义,那么的确可以据此区
    分重载方法。不过,有时你并不关心方法的返回值,你想要的是方法调用的其他效果(常被
    称为“为了副作用而调用”)。你可能会调用方法而忽略其返回值:


    f();


    此时 Java 如何才能判断该调用哪一个 f( )呢?别人该如何理解这种代码呢?因此,根据方法

    的返回值来区分重载方法是行不通的。


    展开全文
  • 我们在平时开发的时候经常会遇见这样一个问题,方法的重载和重写。有时候经常搞混,这篇文章就是为了很好的去...方法重载其实区分重载,有一个很简便的方法,那就是每一个方法有一个独一无二的参数列表。由以上代码...

    我们在平时开发的时候经常会遇见这样一个问题,方法的重载和重写。有时候经常搞混,这篇文章就是为了很好的去整理区分一下。

    一个类中,可以有很多的构造方法,而且名字相同都是类名,其实这些方法就已经构成了重载。也就是说,在一个类中,可以有很多名字相同的不同方法。现在一个问题来了,就是java是如何区分这些方法的呢?

    方法重载

    其实区分重载,有一个很简便的方法,那就是每一个方法有一个独一无二的参数列表。

    ebf045c2c628ce97be940d7740ef428e.png

    由以上代码可以看到:

    1、参数个数不同可以区分

    2、参数的顺序不同可以区分。

    注意;返回值类型不同不能区分。

    为什么返回值类型不同不能区分呢?这是因为有时候我们定义的方法,我们只是想要简单地去调用,而不想去获取他的返回值。

    比如:在调用fff()时,只需要调用fff()或者是fff(1,"数据")而不去获取他的返回值。这样jvm是无法区分的。

    方法重写

    先看一下重写的概念:

    1、在子类中可以根据需要对从基类中继承来的方法进行重写。

    2、重写的方法和被重写的方法必须具有相同方法名称、参数列表和返回类型。(注:返回值可以为父类中返回值的子类型.参数若为子类,则不是重写是重载)

    3、重写方法不能使用比被重写的方法更严格的访问权限。

    4、重写方法不能声明抛出比被重写方法范围更大的异常类型。

    总结:重写是子类对所继承父类相同方法的一种更改,这个更改需要遵循格式按照父类的格式,访问权限,抛出异常等等,都在父类方法控制范围内,内部具体实现可以实现不同的效果。

    通俗一点来说:重写就是对父类的的同一个方法的改写,但是别人怎么知道你这是重写,不是添加的新方法?这就要求格式必须跟父类相同,别人一看,呀,他俩长得一模一样(指的上面2,3,4规则),肯定是重新写了,就是重写。

    看一个例子:

    定义父类:

    b39ce5a0b62b3deabbefdffe681f7865.png

    定义子类

    9363f6d7f22c9c3c03dcba8de73a3c39.png

    这样就完成了方法的重写。

    展开全文
  • Java及JVM是如何识别重载、重写方法的?

    千次阅读 多人点赞 2021-12-21 00:46:10
    可变长参数方法重载造成的。(官方文档建议避免重载可变长参数方法,见[1]的最后一段。 案例 void invoke(Object obj, Object... args) { ... } void invoke(String s, Object obj, Object... args) { ... } ...
  • 不能根据返回值类型来区分重载方法。因为调用时不指定类型信息,编译器不知道你要调用哪个函数。 float max(int a, int b); int max(int a, int b); 当调用max(1,2);时无法确定调用的是哪个,单从这一点上来...
  • 方法重载要满足的条件: 1.方法名相同。...下面看一段报错代码,体现了企图用返回值区分方法重载会产生的矛盾。public class TestOverload { public static void main(String[] args) { TestOverl
  •  注意:方法的返回值类型不能用来区分重载方法。这是因为当调用一个方法时,返回值的类型是不显示的。  2、重写  方法的重写是子类对父类的方法进行改造。  方法重写必须满足下列条件。  (1)子类的...
  • 中,那么的确可以据此区分重载方法。不过,有时你并不关心方法的返回值,你想要的是方法调用的其他效果(这常被称为“为了副作用而调用”),这时你可能会调用方法而忽略其返回值,所以如果像下面的调用:  fun();...
  • 方法重载(overload)在传统的静态类型语言中是很常见的。JavaScript 作为动态语言, 是没有重载这一说的。一是它的参数没有类型的区分,二是对参数个数也没有检查。虽然语言层面无法自动进行重载,但借助其动态的...
  • 5.2.1 区分重载方法

    2014-07-15 11:00:06
    返回值虽然是函数签名的一部分,但不能用于区分函数重载,因为有时候调用函数时并不需要接收和处理返回值,故不能区分不同的函数调用.
  • 主要介绍了Java方法重载和重写原理区别解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 重载方法能否根据返回类型进行区分 面试官考察点猜想 这道题纯粹只是考查基础理论知识,对实际开发工作中没有太多的指导意义,毕竟编辑器都有语法提示功能,如果没写正确,会有错误提示。 背景知识详解 关于重载...
  • “二哥,改变参数的数目和类型都可以实现方法重载,为什么改变方法的返回值类型就不可以呢?”三妹很能抓住问题的重点嘛。 “因为仅仅改变返回值类型的话,会把编译器搞懵逼的。”我略带调皮的口吻回答她。 “编译...
  • 重载 重写 1.定义: 在同一个类中,允许存在一个以上的同名方法,只要他们的参数个数或者类型不同即可。 即两同一不同: 两同:类相同,方法名相同 一不同:参数列表或参数个数或参数类型 2.举例: Arrays...
  • 在java中,重载是其一个非常重要的特性。使用重载,我们就好比是用相同的词表达多种...那么对于以返回值来区分重载方法是否可行呢?比如下面两个方法,虽然他们有同样的名字和形式,但却很容易区分它们: Java代码 v
  • 如果可以根据返回值类型来区分方法重载,那在仅仅调用方法不获取返回值的使用场景,JVM 就不知道调用的是哪个返回值的方法了。 【Java面试题与答案】整理推荐 基础与语法 集合 网络编程 并发编程 Web ...
  • 为什么不能根据方法的返回值类型来区分重载? 说一下个人理解吧,如有不对欢迎大佬指正 声明两个方法 int add(int a,int b); long add(int a,int b); 这两个方法除了返回值以外没有任何不同,调用的时候,假设用...
  • 在PHP中,我们不能够直接通过方法名相同,签名不同的方法来实现方法重载,因为PHP是弱数据类型,不能很好的区分签名。但是,可以在PHP的类中运用__call()方法来实现方法重载。当调用一个类中并不存在的方法时,会...
  • 不能,因为调用时不能确定函数返回的...* 下面以count方法演示代码的重载 * * @author 宁小菜 * */ public class test { public int count(int a,int b) { return a+b; } public int count(double a,int b) { ...
  • * 参数列表不同:* A:参数个数不同* B:参数类型不同* C:参数的顺序不同(不算重载 报错)*如何区分:参数个数不一样 或者参数的类型不一样重载和返回值类型无关 和参数名无关技巧:重载方法名和参数列表1 public ...
  • 此前一直都知道方法重载的概念是方法名相同 + 参数列表不同,也知道不能根据返回类型区分重载,但是不知道原因。 这几天在看《JAVA编程思想》,里面提到了方法过载和返回值过载,过载就是重载的意思。 首先,重载...
  • 在同一类中定义了多个同名而不同内容的成员方法时我们称这些方法重载(override)的方法重载方法主要通过形式参数列表中参数的个数参数的数据类型和参数的顺序等方面的不同来区分
  • JS重载实现方法分析

    2021-01-21 11:36:21
    本文实例分析了JS重载实现方法。分享给大家供大家参考,具体如下: 重载是面向对象语言里很重要的一个特性,JS中没有真正的重载,是模拟出来的(因为js是基于对象的编程语言,不是纯面向对象的,它没有真正的多态:如...
  • Java方法重载区分

    2018-05-09 12:50:11
    下面拿出一段测试程序: class Computer { private int x; public Computer(){ this(10); } /** * 构造方法重载 * @param x */ public Computer(int x){ this.x=x; } ...
  • 主要介绍了Java的this关键字的使用与方法重载相关知识,是Java入门学习中的基础知识,需要的朋友可以参考下
  • 区分类中重载方法的依据是(  

    千次阅读 2021-04-10 12:54:49
    注意:方法重载与返回值类型、访问权限修饰符、和抛出的异常无关,也就是说,返回值类型,权限修饰符是可以改变的。注意:重载是在本类中,与继承关系无关。也就是说可以在子类再重载。被重载方法必须改变参数列表...
  • 为什么不能根据返回 类型来区分重载,为什么? 答:方法的重载,即使返回值类型不同,也不能改变实现功能相同或类似这 一既定事实;同时方法的重载只是要求两同三不同,即在同一个类中,相同的方法名称,参数列表当中的...
  • 但为什么不能根据返回类型来区分重载? 首先重载是Java多态的一种体现,它实现的是编译时的多态。 举个例子: float max(int a, int b); int max(int a, int b); 上面两个方法,别人调用的时候,不要返回值,...
  • 重载方法能否根据返回类型进行区分? 答:方法重载和重写都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性。重载发生在一个类中,同名的方法如果有不同的参数列表(参数...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 100,605
精华内容 40,242
关键字:

如何区分重载的方法

友情链接: RobotEatBeans.rar