学习方法

方法重载返回值

时间:2022-10-01 00:57:44 学习方法 我要投稿
  • 相关推荐

方法重载返回值

  Java返回值重载

  Java返回值重载使用实例/例子代码教程;Java返回值重载 我们很易对下面这些问题感到迷惑:为什么只有类名和方法自变量列出?为什么不根据返回值对方法加以区分?比如对下面这两个方法来说,虽然它们有同样的名字和自变量,但其实是很容易区分的: void f() {} int f() {}若编译器可根据上下文(语境)明确判断出含义,比如在int x=f()中,那么这样做完全没有问题

  Java返回值重载

  我们很易对下面这些问题感到迷惑:为什么只有类名和方法自变量列出?为什么不根据返回值对方法加以区

  分?比如对下面这两个方法来说,虽然它们有同样的名字和自变量,但其实是很容易区分的:

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

  若编译器可根据上下文(语境)明确判断出含义,比如在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) 方法的返回类型和方法的修饰符可以不相同

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

什么是方法重载11-15

方法重载的条件09-23

方法重载与覆盖的区别11-04

方法重载和方法重写的概念和区别09-06

方法重载和方法重写的区别是什么11-16

预习方法和学期预习方法10-26

学习方法要有科学的方法10-11

方法的作文03-11

学习的方法08-14

养猫的方法10-08