zoukankan      html  css  js  c++  java
  • 从头认识java-4.2 方法重载

    这一章节我们来聊一下方法重载。

    1.为什么需要方法重载?

    因为在java里面规定,构造器只有一个,那么,如果我需要多种方式来创建对象,那么怎么做?这个时候就需要方法重载,因为构造器全名叫做构造器函数,他是一个特殊的方法,因此,我们可以对他使用方法重载,而且方法重载对于所有方法都是一样的。

    例子:

    package com.ray.testobject;
    
    public class Test {
    	public static void main(String[] args) {
    	}
    }
    
    class TestClass {
    
    	public TestClass() {
    	}
    
    	public TestClass(String param) {
    	}
    }

    上面代码显示,我们需要两种不同的方法来创建TestClass,因此我们对构造器进行重载。

    而且对于普通的方法都是一样的,我们下面的例子代码是对上面的代码的改造。

    package com.ray.testobject;
    
    public class Test {
    
    	private void info() {
    
    	}
    
    	private void info(String id) {
    
    	}
    
    	public static void main(String[] args) {
    	}
    }
    class TestClass {
    
    	public TestClass() {
    	}
    
    	public TestClass(String param) {
    	}
    }

    2.区分重载方法

    2.1 参数位置不同

    package com.ray.testobject;
    
    public class Test {
    
    	private void info(int id, String name) {
    
    	}
    
    	private void info(String name, int id) {
    
    	}
    
    	public static void main(String[] args) {
    	}
    }
    

    这种方法是可以重载方法,但是不推荐,因为这样的重载可读性差,难维护,易出错。


    2.2 参数类型变化

    package com.ray.testobject;
    
    public class Test {
    
    	private void info(int id) {
    
    	}
    
    	private void info(String id) {
    
    	}
    
    	public static void main(String[] args) {
    	}
    }
    

    我们通过类型的变化,更好的区分开两个方法。

    注意:在重载的过程中,需要注意参数类型的范围大小。

    package com.ray.testobject;
    
    public class Test {
    
    	private void info(char id) {
    		System.out.println("char id:" + id);
    	}
    
    	private void info(int id) {
    		System.out.println("int id:" + id);
    	}
    
    	public static void main(String[] args) {
    		new Test().info(2);
    	}
    }
    

    输出:

    int id:2

    因为一般来说,除非特殊的使用到char类型,不然,Test里面的char id函数的重载永远都不会被使用,因为输入的参数大部分都自动升级到int。


    而且编译器自动的选择方法来实现预算,例子:

    package com.ray.testobject;
    
    public class Test {
    
    	private void info1(short id) {
    		System.out.println("short id");
    	}
    
    	private void info1(int id) {
    		System.out.println("int id");
    	}
    
    	private void info2(int id) {
    		System.out.println("int id");
    	}
    
    	private void info2(short id) {
    		System.out.println("short id");
    	}
    
    	public static void main(String[] args) {
    		double x = 0;
    		new Test().info1((int) x);
    		new Test().info2((short) x);
    	}
    }
    

    输出:

    int id
    short id

    从上面的输出结果可以看见,编译器会自动根据参数,选择合适的类型。


    总结:我们这一章节简单的讨论了方法的重载,以及怎样重载。


    这一章节就到这里,谢谢。

    -----------------------------------

    目录


    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    Codeforces Round #649 (Div. 2) D. Ehab's Last Corollary
    Educational Codeforces Round 89 (Rated for Div. 2) E. Two Arrays
    Educational Codeforces Round 89 (Rated for Div. 2) D. Two Divisors
    Codeforces Round #647 (Div. 2) E. Johnny and Grandmaster
    Codeforces Round #647 (Div. 2) F. Johnny and Megan's Necklace
    Codeforces Round #648 (Div. 2) G. Secure Password
    Codeforces Round #646 (Div. 2) F. Rotating Substrings
    C++STL常见用法
    各类学习慕课(不定期更新
    高阶等差数列
  • 原文地址:https://www.cnblogs.com/raylee2007/p/4944478.html
Copyright © 2011-2022 走看看