从头认识java-4.2 方法重载
2015-10-25 23:21
316 查看
这一章节我们来聊一下方法重载。
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
从上面的输出结果可以看见,编译器会自动根据参数,选择合适的类型。
总结:我们这一章节简单的讨论了方法的重载,以及怎样重载。
这一章节就到这里,谢谢。
-----------------------------------
目录
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
从上面的输出结果可以看见,编译器会自动根据参数,选择合适的类型。
总结:我们这一章节简单的讨论了方法的重载,以及怎样重载。
这一章节就到这里,谢谢。
-----------------------------------
目录
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- Python动态类型的学习---引用的理解
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树