java1234开源博客系统
博客信息

Java面向对象-方法的重载

发布时间:『 2016-08-27 15:07』  博客类别:Java核心基础  阅读(7040) 评论(0)

Java面向对象-方法的重载


所谓方法的重载,

类里面有两个或者多个重名的方法,但是方法的参数个数、类型、顺序至少有一个不一样,这时候局构成方法重载;


上代码:

package com.java1234.chap03.sec03;

public class Demo01 {

	int add(int a,int b){
		System.out.println("方法一");
		return a+b;
	}
	
	/**
	 * 方法的重载,参数个数不一样
	 * @param a
	 * @param b
	 * @param c
	 * @return
	 */
	int add(int a,int b,int c){
		System.out.println("方法二");
		return a+b+c;
	}
	
	/**
	 * 方法的重载,参数的类型不一样
	 * @param a
	 * @param b
	 * @return
	 */
	int add(int a,String b){
		System.out.println("方法三");
		return a+Integer.parseInt(b);
	}
	
	/**
	 * 参数类型个数一样,返回值类型不一样 不算重载,直接会报错,说方法重名
	 * @param args
	 */
	/*long add(int a,int b){
		return a+b;
	}*/
	
	public static void main(String[] args) {
		Demo01 demo=new Demo01();
		System.out.println(demo.add(1, 2));
		System.out.println(demo.add(1, 2,3));
		System.out.println(demo.add(1, "3"));
	}
}


这里有个注意点 假如参数个数和类型一样,返回值不一样,不能算重载,直接是编译出错,编译器认为是方法重复了。


具体原因:我们给下实例代码:

package com.java1234.chap03.sec03;

public class Demo01 {

	int add(int a,int b){
		System.out.println("方法一");
		return a+b;
	}

	/**
	 * 参数类型个数一样,返回值类型不一样 不算重载,直接会报错,说方法重名
	 * @param args
	 */
	long add(int a,int b){
		return a+b;
	}
	
	public static void main(String[] args) {
		Demo01 demo=new Demo01();
		int m=demo.add(1, 2);  // 调用返回值是int类型的方法
		long n=demo.add(1, 2); // 调用返回值是long类型的方法
		
		demo.add(1, 2); // 假如这样些  编译器晕了,你TM是调用返回值是int类型还是long类型的方法
		
	}
}


假如调用方法 指定返回值类型,我们可以确定是调用的是某个方法,比如int m=demo.add(1,2) 因为是返回值m是int类型 那肯定

调用的是int add(int a,int b){ 方法  long n=demo.add(1, 2) 因为返回值n是long类型,那肯定调用的long add(int a,int b){


但是


假如直接 demo.add(1,2); 编译器就SB了,你TM是调用返回值是int类型的方法,还是返回值是long类型的方法;




关键字:   java     方法     重载  
关注Java1234微信公众号
博主信息
Java1234_小锋
(知识改变命运,技术改变世界)
Powered by Java1234 V3.0 Copyright © 2012-2016 Java知识分享网 版权所有