`

关于Java中方法重载的试验

    博客分类:
  • Java
阅读更多

对于方法重载来讲,如果在调用方法的时候,传入参数null对象,会出现怎样的结果呢?
下面就举个Sample:

1. 重载方法类:
public class MethodReloader {
	
	public void printObject(String str){
		System.out.println("String print out");
	}
	
	public void printObject(Object obj){
		System.out.println("Object Print out");
	}
	
}

2. 测试类:

public class TestString {

	/**
	 * @param args
	 */
	public static void main(String[] args)throws Exception {
		try{
	   MethodReloader methodReloader = new MethodReloader();
		   methodReloader.printObject(null);
		}catch(Exception ex){
			ex.printStackTrace();
			
		}
	}

1) 执行结果是什么呢?
2) 如果在类MethodReloader中添加一行:

public void printObject(Double obj){
		   System.out.println("Double print out");
	}

结果是什么呢?
3) 如果在类MethodReloader中添加一行:
    
public void printObject(double obj){
		System.out.println("double print out");
	}

     结果是什么呢?

1) Console输出结果是:String print out.
2) Compile error.
3) Console输出结果是:String print out.

结论:
关于方法重载,JVM总是在内存中去寻找参数类型和个数相等的方法去执行,但是当寻找多个方法时,先匹配所有类型的最小子类(如:Object是所有类的父类,即先匹配其它类),就调用该方法。如果发现有两个同等级类型的方法时候,在编译期间就出现Exception.
0
1
分享到:
评论
2 楼 Amanda_lsy 2011-07-07  
但是jvm是如何根据参数类型和个数相等的去调用不同的方法呢
1 楼 mercyblitz 2010-05-28  
总结得不错,编译器根据树形结构层次查找,最近匹配的。

相关推荐

    Java方法继承、方法重载、方法覆盖总结

    在Java编程语言中,方法继承、方法重载、方法覆盖是三个非常重要的概念。它们之间既有关联又有区别,掌握这些概念对于深入理解面向对象编程有着至关重要的作用。 #### 一、Java方法继承 **方法继承**是指在一个类...

    Java实验-掌握方法的声明和调用 掌握方法的值传递 掌握方法的重载

    在本实验中,学生没有涉及到方法的重载,但在实际编程中,方法的重载非常重要。 四、Math 类的使用 Math 类是 Java 中的一个工具类,提供了一些数学运算的方法,例如,sin、cos、log10、pow、sqrt 等。在本实验中...

    java第四章实验答案

    Java第四章实验答案涵盖了Java语言的基础知识点,包括类和对象、构造方法、方法重载、面向对象编程、条件表达式和数学运算等。本文详细解释了AreaAndLength类、Trangle类、Lader类和Circle类的代码实现和知识点解析...

    JAVA接口与继承实验

    在第一个实验中,我们定义了一个接口Printx,该接口中只有一个方法printMyWay(),该方法没有形参,返回值为空。然后,我们创建了一个类B,实现了Printx接口,在类B中,我们重写了printMyWay()方法,使其打印出定义...

    实验二 方法的定义、重载;数组的应用 定义一个方法,并且该方法能够实现四则运算的功能

    在这个实验中,我们主要探讨了Java编程语言中的几个核心概念:方法的定义、重载以及一维数组的应用。首先,让我们详细分析实验标题和描述中提到的知识点。 1. **方法的定义**: 在Java中,方法是完成特定任务的一...

    实验三 类的定义、封装;构造方法的定义、重载

    在Java编程语言中,类是面向对象编程...通过这个实验,你可以更好地理解类的定义、对象的创建、封装的实现、构造方法的定义和重载等核心Java编程概念。实践这些知识点有助于提升编程技能,更好地应用面向对象编程思想。

    java 方法的流程控制与异常处理

    本次实验旨在通过一系列具体的编程任务,加深学生对Java语言中流程控制结构的理解,并掌握Java异常处理的基本方法。具体目标包括: - **熟练掌握Java各种流程控制结构(选择结构、循环结构)的使用**:通过对不同的...

    Java 语言与面向对象程序设计(2版)实验指导5.2

    "Java语言与面向对象程序设计(2版)实验指导5.2"可能涵盖了这一领域的关键主题,尤其是关于继承和方法重载的概念。这两个特性是Java中实现多态性和灵活性的基础。 **继承**是OOP的一个关键特性,它允许一个类...

    实验二 方法的定义、重载;数组的应用 通过方法重载的方式实现九九乘法表的打印

    在这个实验中,主要涉及到Java编程语言中的几个关键概念:方法的定义、方法的重载以及一维数组的应用。首先,让我们详细了解一下这些知识点。 1. **方法的定义**: 在Java中,方法是实现特定功能的代码块,可以被...

    java推箱子实验报告.pdf

    3. Java图形用户界面(GUI)编程:报告中提及了“JFrame”、“JButton”、“JLabel”、“JComboBox”、“MenuItem”等组件,这说明实验中涉及到了使用Java的Swing库来构建图形用户界面。Swing是Java的一个用户界面...

    JAVA实验报告二Java面向对象程序设计.docx

    在本次实验中,我们将深入理解面向对象的基本概念,包括类的定义、对象的创建、接口的使用以及异常处理。 首先,实验的第一个部分涉及创建一个名为`Course`的类,用于表示课程。课程具有三个属性:课程名...

    西南科技大学Java程序设计与实践 实验二 对象基础实验实验报告

    实验过程中,学生应理解如何使用面向对象编程解决问题,同时掌握Java类的构建和方法的实现。通过实验,可以提升编程技能,为后续更复杂的编程任务打下坚实基础。 **六、附录:代码片段** 这里只列出了实验报告中...

    Java程序设计课程实验5-方法应用

    - 在实验中,要求定义3个重载的`volume`方法,用于计算不同几何体的体积。例如,除了求正方体体积的方法,还可以有: ```java double volumeOfSphere(double radius) { return (4.0 / 3.0) * Math.PI * radius *...

    Java多态性实验报告

    实验中,学生将通过编写一个处理复数运算的类来实现这一目标。 #### 多态性简介 多态性是面向对象编程中的一个重要特性,它允许子类对象以父类对象的形式出现。Java中实现多态性的主要方式有两种:方法重载...

    实验三:Java类与对象

    函数重载是Java中允许同一方法名但参数列表不同的多个方法存在,这在`Rectangle`类中得到了体现,我们创建了两个方法:`getLength()`和`getArea()`,它们虽然都无参数,但返回类型不同,实现了功能上的区分。...

    java实验报告完整版

    在实验中,创建了一个名为`box`的`Box`类对象,然后使用`setDemo`方法设置了它的属性值。 3. **方法的定义和调用**: `setDemo`方法负责设置立方体的尺寸,而`area`方法则计算立方体的体积。在`main`方法中,我们...

    Java实验源代码_Java课程实验_

    1. **Java基本语法**:这部分实验主要涉及Java的基础语法,如变量声明、数据类型、运算符、流程控制(if-else、switch、for、while循环)以及方法定义等。通过编写简单的程序,学习者可以掌握如何在Java环境中组织和...

    java程序设计实验指导代码

    5.5 实验4 方法重载 第6章 继承和多态 6.1 预备知识 6.2 实验1 子类的派生与方法覆盖 6.3 实验2 多态性与动态绑定 6.4 实验3 嵌套类和内部类 第7章 包、接口和常用工具类 7.1 预备知识 7.2 实验1 包的使用与...

    Java 语言与面向对象程序设计(2版)实验指导5.3

    同时,抽象类和接口也是面向对象设计中的重要概念,它们在多态和解耦中起到关键作用,可能也会在实验中有所涉及。 总之,《Java语言与面向对象程序设计(2版)实验指导5.3》将引导你深入理解面向对象编程的核心概念...

    实验二 方法的定义、重载;数组的应用 定义一个数组,将序列{0,1,2,3,4}赋值给数组,并写一个方法用来访问数据的每一个元素

    在这个实验中,我们将深入探讨Java编程中的几个关键概念:方法的定义、方法的重载以及一维数组的应用。首先,让我们逐一分析这些知识点。 1. **方法的定义**: 在Java中,方法是实现特定功能的代码块,可以通过...

Global site tag (gtag.js) - Google Analytics