Java学习笔记之方法重载

被重载的方法必须具有不同的参数列表.不能基于不同修饰符或返回值类型来重载方法.

package welcome;

public class TestMethodOverloading {
    public static void main(String[] args) {
        System.out.println("The maximum between 3 and 4 is " + max(3, 4)); // 调用max(int, int)方法

        System.out.println("The maximum between 3.0 and 5.4 is " + max(3.0, 5.4)); // 调用max(double, double)方法

        System.out.println("The maximum between 3.0 , 5.4 and 10.14 is " + max(3.0, 5.4, 10.14)); // 调用max(double, double, double)方法
    }

    public static int max(int num1, int num2){
        if(num1 > num2){
            return num1;
        }else{
            return num2;
        }
    }

    public static double max(double num1, double num2){
        if(num1 > num2){
            return num1;
        }else{
            return num2;
        }
    }

    public static double max(double num1, double num2, double num3){
        return max(max(num1,num2), num3);
    }
}
package welcome;

/*
 *演示歧义调用
 * 当调用一个方法时,有一个或者更多可能的匹配,编译器无法判断哪个匹配更精确,这称为歧义调用.
 * 歧义调用会引发编译错误
 */
public class AmbiguousOverloading {
    public static void main(String[] args) {
        System.out.println(max(1,2)); // max(int, double)和max(double, int)都有可能与max(1,2)匹配,由于这两个方法谁也不比谁更精确
    }                                 // 所以这个调用是有歧义的,将引发编译错误

    public static double max(int num1, double num2){
        if(num1 > num2){
            return num1;
        }else{
            return num2;
        }
    }

    public static double max(double num1, int num2){
        if(num1 > num2){
            return num1;
        }else{
            return num2;
        }
    }
}
时间: 2024-11-23 06:38:08

Java学习笔记之方法重载的相关文章

Java学习笔记之方法重载,动态方法调度和抽象类

一.方法重载 如果子类中的方法与它的超类中的方法有相同的方法名,则称子类中的方法重载超类中的方法,特别是当超类和子类中的方法名和参数类型都相同时,在子类中调用该方法时,超类中的方法会被隐藏.考虑下面程序: 1 class A 2 { 3 int i, j; 4 A(int a, int b) 5 { 6 i = a; 7 j = b; 8 } 9 10 // display i and j 11 void show() 12 { 13 System.out.println("i and j: &

【原】Java学习笔记008 - 方法(函数)

1 package cn.temptation; 2 3 public class Sample01 { 4 public static void main(String[] args) { 5 // 方法/函数 Method/Function 6 7 // 为什么会出现方法? 8 // 原因1.在程序中多处出现相同的语句内容 9 // 原因2.会发生变化 10 11 // [只有变化是不变的] 12 // 回顾一下变量,为了应对变化,提出的新的机制 13 // 需要对变化进行封装处理,在这里就

Java学习笔记之继承

一.继承的基础 在Java术语中,被继承的类叫超类(superclass),继承超类的类叫子类(subclass). 举例说明: 1 class Box 2 { 3 public double width; 4 public double height; 5 public double depth; 6 7 //重载构造方法 8 public Box(Box ob) 9 { 10 width = ob.width; 11 height = ob.height; 12 depth = ob.dep

Java 学习笔记(2015.7.13~17)

Java 学习笔记(2015.7.13~17) Java this关键字 表示本类中的属性,调用本类中的方法 class Person {        private String name;         private int age;         public Person(String name, int age) {         this.name = name;//调用本类中的属性         this.age = age;//同上} //get&set方法:    

[Java学习笔记]对象克隆

对象克隆: 浅克隆: 被克隆的对象中的值类型数据被复制一份新值,但是引用的对象只被复制其引用传递给新克隆出来的对象 深克隆: 被克隆的对象中的值类型数据被复制一份新值,并且其中引用的对象会重新创建新的对象,把新对象的引用传递给新克隆出来的对象 Java中实现克隆: Java中Object中定义了clone方法,默认为浅克隆操作,即你只是简单super.clone得到的结果是浅克隆的结果,如果需要深克隆,则需要实现Cloneable接口,并且重写clone方法 查看Java源代码发现Object中

Java学习笔记<3>面向对象相关

面向对象的基本思想 从现实世界客观存在的事务出发来构造软件系统,并在系统的构造中尽可能运用人类的自然思维方式,如抽象.分类 继承.聚合.多态等. 类和对象的关系 对象中存储了类规定的数据类型,并且对象可以调用类的方法. java面向对象 <1>对象是java程序的核心,一切皆对象. <2>对象可以看成静态属性(成员变量)和动态属性(方法)的封装体. <3>类是创新同一类型对象的模版,定义了该类型对象应具有的成员变量及方法. 类的定义 成员变量可以用java语言的任何一种

java学习笔记 5

随手 看到了这篇关于Java到底哪里出了问题的文章,笑傻了23333 “Java developers just can’t help themselves it seems - give em an inch, and next thing you know you’re looking at a OO hierarchy 15 layers deep and instantiating a hammer hammer factory.” 继承 Java中的继承用extends,所有的继承都是

Java学习笔记(2015.7.27~7.31)

Java学习笔记(2015.7.27~7.31) Java 课堂 Java学习笔记(2015.7.27~7.31) 小技巧 常用方法 1.List另一个子类--LinkedList 2.数组的常用方法 3.排序 1.二分法查找 2.数组转换为List 3.可变参数Type ... param (了解) 1.容器Collection 2.自动拆装箱(了解) 3.JDK增强for循环(了解) 4.泛型(掌握) 5.iterator与for在迭代中的区别 1.概念:保存多个对象的对象. 2.JDk为什

Java学习笔记二:初始化(一)

1.对象初始化 在使用 new 初始化对象时,系统通常使用默认的构造函数,这个构造函数没有返回值,格式为: public class InitializeTest { private int a; // 默认构造函数 public InitializeTest() { } // 自定义构造函数 public InitializeTest(int a) { this.a = a; } } 虽然在使用 new 创建实例时,返回了这个对象的引用,但是这个与没有返回值的void方法不同 //void方法