学习方法

方法重载返回值类型

时间:2020-12-08 11:01:36 学习方法 我要投稿

方法重载返回值类型

  重载的概念是:

  方法名称相同,参数个数、次序、类型不同

  因此重载对返回值没有要求,可以相同,也可以不同

  但是如果参数的个数、类型、次序都相同,方法名也相同,仅返回值不同,则无法构成重载

  如:

  public int A(int i);

  public double A(int i);

  这2个方法不能构成重载,会有编译错误。

  而:

  public int A(int i):

  public double A(double i);

  这2个方法可以形成重载

  通过返回值来区分重载方法

  在java中,重载是其一个非常重要的特性。使用重载,我们就好比是用相同的词表达多种不同的含义。方法重载的规则很简单,就是每个重载的方法都必须有一个独一无二的参数类型列表,什么是独一无二的参数类型,即参数个数不同、参数类型不同、参数顺序不同。那么对于以返回值来区分重载方法是否可行呢?比如下面两个方法,虽然他们有同样的名字和形式,但却很容易区分它们:Java代码voidf(){}intf(){reurn1;}

  只要编译器可以根据语境明确判断出语义,比如在int x =f()中,那么的确可以据此却分重载方法。不过,有时你并不关心方法的返回值,你想要的是方法调用的其他效果,这时你可能会调用方法而忽略其返回值。所以,如果像下面这样调用方法:f();此时Java如何才能判断该调用哪一个f()呢?因此,根据方法的返回值来区分重载方法是行不通的。

  java方法的重载与覆盖的返回值类型

  首先看一段程序:

  package testOverLoadandoverRide;

  public class A extends B{

  //下面的是方法的覆盖(overRiding)

  public void riding(){

  System.out.println("this is overRiding ");

  }

  //下面两个函数是方法的重载(overLoading),但是返回值类型不同,可以运行

  public String loading(int x){

  System.out.println("this is overLoading return String");

  return null;

  }

  public int loading(int x,int y){

  System.out.println("this is overLoading return int");

  return 0;

  }

  public static void main(String[] args) {

  A a = new A();

  a.riding();

  a.loading(2);

  a.loading(2,3);

  }

  }

  class B{

  public void riding(){

  System.out.println("this is B");

  }

  }

  下面是运行结果:

  this is overRiding

  this is overLoading return String

  this is overLoading return int

  有以上程序可以知道,方法的重载是可以改变返回值类型的,但是尚不能说明方法的覆盖是否可以改变返回值类型,现在修改A类中 riding()方法的返回值类型为int,

  public int riding(){

  System.out.println("this is overRiding ");

  }

  此时会有如下的错误:

  由此可知,方法的覆盖是不允许修改返回值类型的。

  以上测试程序运行在JDK1.5版本。

  我对此的解释为:

  方法的重载是根据函数的参数列表来决定的,即:参数列表的'个数,类型,顺序三个方面;

  对于其返回值类型,就是改变了也不会有影响,因为你不可能写成参数类表相同(个数,类型,顺序)的方法重载,因为那根不就不是重载。所以返回值类型也就不能作为程序运行时选择函数的一个标准,因此返回值类型也就没了对函数选择时的影响。

  方法的覆盖不仅根据函数的参数列表还要根据返回值类型,因为覆盖的方法的标志必须要和被覆盖的方法的标志完全匹配,才能达到覆盖的效果;

  覆盖时还有“类型的提升”。

  总结如下:

  方法覆盖必须满足下列条件

  (1) 子类的方法的名称及参数必须和所覆盖的方法相同

  (2) 子类的方法返回类型必须和所覆盖的方法相同

  重载方法必须满足下列条件

  (1) 方法名必须相同

  (2) 方法的参数签名必须相同

  (3) 方法的返回类型和方法的修饰符可以不相同

【方法重载返回值类型】相关文章:

简历类型01-23

类型化广播02-09

类型作文评语02-12

关于仲裁协议类型09-13

审计报告类型02-10

仲裁协议的类型01-25

作文批改评语常用类型01-19

贺信的格式及类型11-27

财务分析报告的类型02-06

审计意见类型有哪些07-04