• 从头认识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

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


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


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

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

    目录


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

  • 相关阅读:
    NXOPEN二次开发CAM Operation转OperationBuilder对加工操作修改一些进给速度参数
    NX二次开发MFC对话框自己重绘Button控件(提升美观度)重写DrawItem方法(已完结)
    NX二次开发使用SendMessage给NX窗口发送消息最小化
    NX二次开发调内部函数将对象设置为全局选择(设为高亮选中状态,在选择列表里)
    NX二次开发UFUN输入一个点,距离,矢量方向,获得另外一个点的坐标UF_VEC3_affine_comb
    NX二次开发UFUN获得NX的窗口句柄UF_UI_get_default_parent
    vuetiger机抽奖组件(转)
    浅谈module.exports与exports,export与export default的区别
    解决echarts控制台警告:There is a chart instance already initialize on the dom
    maven版本管理
  • 原文地址:https://www.cnblogs.com/raylee2007/p/4944478.html
Copyright © 2020-2023  润新知