`
逆风的香1314
  • 浏览: 1431792 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

老紫竹JAVA基础培训(10),方法的Overload介绍

阅读更多

原文地址:http://www.java2000.net/p11670

测试代码
  1. package lession10;
  2. import java.util.ArrayList;
  3. import java.util.LinkedList;
  4. import java.util.List;
  5. /**
  6.  * 老紫竹JAVA基础培训(10),方法的Overload介绍.<br>
  7.  * 匹配方式为最特殊匹配,或者叫最准确匹配<br>
  8.  * 如果发现多个都有相同的匹配度,则编译报错。
  9.  * 
  10.  * @author 老紫竹 JAVA世纪网(java2000.net)
  11.  * 
  12.  */
  13. public class Lession10 {
  14.   public void test1(byte id) {
  15.     System.out.println("test1(byte);");
  16.   }
  17.   public void test1(short id) {
  18.     System.out.println("test1(short);");
  19.   }
  20.   public void test1(int id) {
  21.     System.out.println("test1(int);");
  22.   }
  23.   public void test1(long id) {
  24.     System.out.println("test1(long);");
  25.   }
  26.   public void test1(float id) {
  27.     System.out.println("test1(float);");
  28.   }
  29.   public void test1(double id) {
  30.     System.out.println("test1(double);");
  31.   }
  32.   public void test2(Object o) {
  33.     System.out.println("test2(Object);");
  34.   }
  35.   public void test2(String o) {
  36.     System.out.println("test2(String);");
  37.   }
  38.   public void test2(Integer o) {
  39.     System.out.println("test2(Integer);");
  40.   }
  41.   public void test2(List o) {
  42.     System.out.println("test2(List);");
  43.   }
  44.   public void test2(ArrayList o) {
  45.     System.out.println("test2(ArrayList);");
  46.   }
  47.   public void test3(int a, float b) {
  48.     System.out.println("test3(int,float);");
  49.   }
  50.   public void test3(long a, double b) {
  51.     System.out.println("test3(long,double);");
  52.   }
  53.   public static void main(String[] args) {
  54.     Lession10 o = new Lession10();
  55.     o.test1(1); // 整数默认为 int
  56.     o.test1((byte1); // 强制调用 byte
  57.     o.test1((short1); // 强制调用 short
  58.     o.test1(1L); // long
  59.     o.test1(1.0); // 小数默认为 double
  60.     o.test1(1.0F); // 强制调用float
  61.     //
  62.     o.test2(new Object()); // 对象类型
  63.     o.test2("String"); // 字符串比对象更准确
  64.     o.test2(new Integer(3)); // 整数对象
  65.     o.test2(3); // JDK 5及以上
  66.     o.test2(new LinkedList()); // 调用更匹配的List
  67.     o.test2(new ArrayList()); // 调用 ArrayList
  68.     //
  69.     // 强制转换测试
  70.     o.test2((Object) new ArrayList()); // 以强制后的类型进行屁屁额
  71.     o.test2((List) new ArrayList());// 以强制后的类型进行屁屁额
  72.     // 多参数测试
  73.     o.test3(12);
  74.     o.test3(1L, 3);
  75.     o.test3(1, 3D); // 自动升级优先,int可以自动升级到long,float可以自动升级到double
  76.     //
  77.     // o.test2(null); // 不能确定匹配度的测试
  78.   }
  79. }
写一下运行结果大家参考
test1(int);
test1(byte);
test1(short);
test1(long);
test1(double);
test1(float);
test2(Object);
test2(String);
test2(Integer);
test2(String);
test2(List);
test2(ArrayList);
test2(Object);
test2(List);
test3(int,float);
test3(long,double);
test3(long,double);


测试:
1 其中最后一个带有注释,大家可以去掉注释看看编译效果,熟悉一些这个错误。

2 数字是最容易混淆的,大家可以用各种数字混合看看, 整数可以转化为对应精度的浮点数

3 增加更多的参数类型,一般不超过5个,测试各种组合的系统匹配情况,加深印象。



总结:
  1 以最贴切,最准确的匹配进行调用

  2 如果没有完全匹配的,则进行允许的不丢失精度的类型转换,int可以升级为long,float可以升级为double, 整数可以升级为浮点数

  3 如果还没有匹配的,则报错



 4 如果发现有多个匹配的,无法确定到底是哪一个,则编译报错


分享到:
评论

相关推荐

    JAVA方法的定义和方法的重载Overload.docx

    方法的定义和方法的重载是 Java 编程语言的基础知识,本文将对 Java 方法的定义和方法的重载进行详细的介绍。 一、Java 方法的定义 Java 方法是解决问题的多行代码的集合,给予一个名字,以便多次使用。方法的作用...

    传智播客Java培训毕向东Java基础课件01-08高清pdf

    2. **Java基础语法1**和**2**:这是Java语言的基础部分,涵盖变量、数据类型(包括基本类型和引用类型)、运算符、流程控制(如if语句、switch语句、循环语句for、while、do-while)、方法定义与调用、字符串处理等...

    尚硅谷JAVA基础笔记吐血整理

    多态则是指一个接口可以有多种不同的实现,提高了程序的灵活性,例如方法的重写(Override)和重载(Overload)。 【形参与实参】 形参是方法定义时声明的参数,而实参是调用方法时传入的实际值。Java采用值传递...

    Java基础教学视频详解

    根据提供的文件信息,“Java基础教学视频详解”主要面向Java初学者,旨在通过详细的讲解帮助学习者掌握Java基础知识。下面将围绕这一主题展开更深入的知识点介绍。 ### Java基础概述 Java是一种广泛使用的、面向...

    Java中的方法重载(overload).docx

    Java中的方法重载(Overload)是面向对象编程的一个重要特性,它允许我们在同一个类中定义多个具有相同名称但参数列表不同的方法。方法重载的关键在于“多态性”(Polymorphism),即同名方法可以通过不同的参数形式...

    java基础f复习

    - **方法重载**(Overload):在同一个类中,方法名相同但参数列表不同的多个方法。 - **方法覆盖**(Override):子类重写父类的方法,方法签名(方法名和参数列表)必须完全相同。 - **方法参数传递**:Java中...

    完整版Java全套入门培训课件 Java基础 03-面向对象(共18页).rar

    本套Java入门培训课件共18页,将深入浅出地介绍这些概念,并通过实例帮助学习者掌握面向对象编程的基本技巧,为后续的Java学习打下坚实基础。通过系统学习,你将能够熟练运用Java进行面向对象的编程实践,逐步成为一...

    JAVA基础知识入门

    5. **多态**:多态是指同一个引用类型在不同子类中可以有不同的表现形式,是Java实现动态绑定的关键特性,通过方法重写(Override)和方法重载(Overload)实现。 6. **包(Package)**:包是Java中管理类的一种...

    JAVA基础知识精华总结

    Java通过方法重写(Override)和方法重载(Overload)实现多态性。 三、异常处理 Java提供了异常处理机制,通过try-catch-finally语句块捕获和处理运行时错误。异常是程序执行过程中发生的不正常情况,可以自定义...

    java面试宝典java基础大全.pdf

    这份"Java面试宝典java基础大全.pdf"涵盖了Java基础知识的各个方面,旨在帮助面试者准备常见问题。以下是一些关键知识点的详细解释: 1. **单个.java源文件**:一个.java源文件可以包含多个类,但只能有一个公开的...

    Java基础面试题

    Java 基础面试题详解 在 Java 面试中,了解一些基础知识点是非常重要的。本文将对 Java 基础面试题进行详细的解释,包括 final、finally、finalize 的区别、Anonymous Inner Class、& 和 && 的区别、HashMap 和 ...

    Java方法重载Overload原理及使用解析

    Java中的方法重载(Overload)是面向对象编程的一个重要特性,它允许我们在同一个类中定义多个同名方法,但这些方法必须具有不同的参数列表。这样设计的主要目的是提高代码的可读性和可维护性,避免因为功能相似而起...

    java基础测试题(附答案)

    Java是一种广泛使用的面向对象的编程语言,其基础知识包括类、对象、继承、多态、异常处理等核心概念。以下是对给定的Java基础测试题及其答案的详细解释: 1. **习题训练1** - 关于Java继承的描述,选项C错误。子类...

    java基础考试题

    Java 基础考试题知识点总结 以下是 Java 基础考试题的知识点总结: 1. 垃圾回收的优点和原理 垃圾回收是 Java 语言的一大特点,使得程序员不再需要关心内存管理问题。垃圾回收机制可以有效地防止内存泄漏,使用...

    Java基础总结基础部分

    ### Java基础总结基础部分 #### 运行时异常与一般异常的区别 异常是程序运行过程中可能出现的非正常状态。在Java中,异常大致分为两大类:运行时异常和非运行时异常(也称检查型异常)。 - **运行时异常**: - ...

    overload and override

    - `Overload`指的是在同一类中可以定义多个同名的方法,这些方法具有相同的名称但拥有不同的参数列表(即参数个数不同或参数类型不同)。 - 这种机制使得开发人员能够根据传入的不同参数类型或数量来决定具体执行...

    java基础必备知识

    ### Java基础必备知识 #### 一、基础语法 在学习Java之前,首先需要了解Java的发展历程,这有助于我们更好地理解其设计理念。接着是搭建开发环境并编写第一个程序——HelloWorld,以此来熟悉Java的基本语法。 - *...

    JAVA基础试题附答案

    Java 基础试题涵盖了多个核心概念,这些概念对于理解和掌握 Java 编程语言至关重要。以下是对题目中涉及知识点的详细解释: 1. 浮点数类型:在 Java 中,`float` 类型用于存储浮点数,但 `3.4` 是一个 `double` ...

    Java基础面试题(2012完整版)

    方法重载(overload)是Java中一种强大的特性,它允许在同一个类中存在多个同名方法,这些方法的参数类型、个数或者顺序不同。当调用一个重载方法时,Java虚拟机会根据传递给方法的参数自动选择合适的重载版本。这种...

Global site tag (gtag.js) - Google Analytics