`

java方法重载(慎用重载)

 
阅读更多

1.什么是方法重载

    方法名字相同,参数类型或者参数个数不同

2.下面我们先看下面这段代码

  

[java] view plain copy
 
 print?在CODE上查看代码片派生到我的代码片
  1. public class CollectionClassifier {  
  2.   
  3.     public static String classify(Set<?> s) {  
  4.         return "set";  
  5.     }  
  6.   
  7.     public static String classify(List<?> l) {  
  8.         return "list";  
  9.     }  
  10.   
  11.     public static String classify(Collection<?> c) {  
  12.         return "unknown";  
  13.     }  
  14.   
  15.     public static String get(String str1, String str2) {  
  16.         return str1 + str2;  
  17.     }  
  18.   
  19.     public static String get(String... strings) {  
  20.         return "###########";  
  21.     }  
  22.   
  23.     /** 
  24.      * 
  25.      *  
  26.      * @param args 
  27.      */  
  28.     public static void main(String[] args) {  
  29.         Collection<?>[] cArray = { new ArrayList<String>(), new HashSet<String>(),  
  30.                 new HashMap<String, String>().values() };  
  31.         for (Collection<?> c : cArray) {  
  32.             System.out.println(classify(c));  
  33.         }  
  34.         System.out.println(get("1""2"));  
  35.     }  
  36. }

 

 

我们期待的输出可能是list,set,unkonown;

然而真实的输出却是unkonown,unkonown,unkonown

3.原因

   classify方法被重载了,而决定调用哪个重载的方法是在编译时做出决定的,下面的for循环,参数的编译时类型都是Collection,所以最终都是调用参数类型是Collection的classify方法

分享到:
评论

相关推荐

    63.java方法重载.zip

    63.java方法重载.zip63.java方法重载.zip63.java方法重载.zip63.java方法重载.zip63.java方法重载.zip63.java方法重载.zip63.java方法重载.zip63.java方法重载.zip63.java方法重载.zip63.java方法重载.zip63.java...

    64.java方法重载特点.zip

    64.java方法重载特点.zip64.java方法重载特点.zip64.java方法重载特点.zip64.java方法重载特点.zip64.java方法重载特点.zip64.java方法重载特点.zip64.java方法重载特点.zip64.java方法重载特点.zip64.java方法重载...

    65.java方法重载练习.zip

    65.java方法重载练习.zip65.java方法重载练习.zip65.java方法重载练习.zip65.java方法重载练习.zip65.java方法重载练习.zip65.java方法重载练习.zip65.java方法重载练习.zip65.java方法重载练习.zip65.java方法重载...

    Java方法重载+Java重载案例

    Java方法重载+Java重载案例+Java重载 Java方法重载+Java重载案例+Java重载 Java方法重载+Java重载案例+Java重载 Java方法重载+Java重载案例+Java重载

    Java方法重载的实例

    Java方法重载是面向对象编程中的一个重要概念,它允许在一个类中定义多个具有相同名称但参数列表不同的方法。这样做的好处在于,通过方法名就可以直观地理解方法的功能,而具体的执行逻辑则由传入的参数类型和数量...

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

    Java 方法的定义和方法的重载 Overload Java 方法是 Java 编程语言的基本组成部分之一。方法是解决问题的多行代码的集合,给予一个名字,以便多次使用。方法的定义和方法的重载是 Java 编程语言的基础知识,本文将...

    java中方法重载内存分析

    在Java编程语言中,方法重载(Overloading)是一种重要的多态性实现方式,它允许我们在同一个类中定义多个同名但参数列表不同的方法。理解方法重载的内存分配过程对于初学者来说至关重要,因为这有助于深入理解Java...

    JAVA中的方法重写与方法重载区别

    JAVA中的方法重写与方法重载区别 JAVA 中的方法重写和方法重载是两个重要的概念,在面向对象程序设计语言中尤为重要。方法重写和方法重载都是多态性的体现,但它们之间有着本质的区别。 方法重写(Override)是指...

    Java方法重载详细说明

    在Java编程语言中,方法重载(Method Overloading)是一种重要的特性,它允许我们在同一个类中定义多个同名方法,但这些方法的参数列表必须有所区别。方法重载的主要目的是提高代码的可读性和复用性,使得我们可以...

    Java中重载和重写总结

    Java 中的重载是指在同一个类中可以创建多个方法,它们具有相同的名字,但是参数个数和参数类型不同。编译器会根据方法调用的参数类型来决定具体使用哪个方法,这也是多态性的一种体现形式。 1. 方法重载的定义 ...

    Java方法重载

    Java 方法重载 Java 中的方法重载是指在一个类中,同一个方法名称可以实现不同的操作。方法重载的要求是:在同一个类中,方法名必须相同,而参数列表不同。注意,方法的重载与返回值和访问修饰符没有关系。 方法...

    java方法的重载

    ### Java方法的重载 在Java编程语言中,方法重载(Overloading)是一个非常重要的概念,它允许我们在一个类中定义多个同名的方法,但这些方法必须具有不同的参数列表。这种灵活性使得程序设计更加直观且易于理解。...

    Java重写重载线程

    ### Java中的方法重载与重写以及线程概念详解 #### 一、方法重载(Overloading) 在Java中,**方法重载**是指在同一个类中定义多个具有相同名称但参数列表不同的方法。这里提到的“参数列表不同”不仅包括参数的...

    java中重载与重写

    在Java编程语言中,方法的重载(Overloading)与重写(Overriding)是两个非常重要的概念。它们虽然只有一字之差,但其实质却大相径庭。理解这两者的不同对于深入掌握Java语言至关重要。 ### 一、重载(Overloading...

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

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

    Java的方法重载概念

    Java中的方法重载是面向对象编程的一个重要特性,它允许在一个类中定义多个同名但具有不同参数列表的方法。这种方法重载的概念使得代码更加简洁、易读,同时也提高了代码的复用性。下面我们将深入探讨这个主题。 ...

    java方法重载示例

    Java中的方法重载是面向对象编程的一个重要特性,它允许我们在同一个类中定义多个具有相同名称但参数列表不同的方法。这样做使得代码更加简洁且易于理解,因为我们可以使用相同的调用方式来执行不同的操作,根据传入...

    Java方法重载和方法重写的区别.docx

    Java编程语言中,方法的两种重要特性是方法重载(Overloading)和方法重写(Overriding)。这两种机制都是为了实现多态性,但它们在实际应用中有着明显的区别。 **方法重载(Overloading)**: 方法重载发生在同一...

    Java 中方法的重载与覆盖

    ### Java中的方法重载(Overloading)与方法覆盖(Overriding) #### 方法的重载(Overloading) 在Java中,方法重载允许我们定义多个同名的方法,但这些方法之间必须具备不同的特征来区分它们。这有助于提高代码的...

    Java的重载和重写

    Java编程语言中的重载(Overloading)和重写(Overriding)是两个关键的概念,它们都是多态性的重要体现,但各自有着不同的含义和规则。 首先,我们来详细了解一下方法的重载。重载,简单来说,就是在一个类中定义多个...

Global site tag (gtag.js) - Google Analytics