Java方法重载
来源:互联网 发布:中国网络黑客事件 编辑:程序博客网 时间:2024/06/05 22:51
在java中,同一个类中的多个方法可以有相同的名字,只要它们的参数列表不同就可以,这被称为方法重载(method overloading).
参数列表又叫参数签名,包括参数的类型,参数的个数和参数的顺序,只要有一个不同就叫做参数列表不同。
重载是面向对象的一个基本特性。
下面看一个详细的实例。
public class Demo{ //一个普通方法,不带参数 void test() { System.out.println("No parameters"); } //重载上面的方法,并且带了一个整形参数 void test(int a) { System.out.println("a: " + a); } //重载上面方法,并且带了两个参数 void test(int a,int b) { System.out.println("a and b: " + a + " " + b); } //重载上面的方法,并且带了一个双精度参数 double test(double a) { System.out.println("double a: " + a); return a * a; } public static void main(String[] args) { Demo obj = new Demo(); obj.test(); obj.test(2); obj.test(2,3); obj.test(2.0); }}
运行结果:
No parameters
a: 2
a and b: 2 3
double a: 2.0
通过上面的实例,读者可以看出,重载就是在一个类中,有相同的函数名称,但形参不同的函数。重载的结果,可以让一个程序段尽量减少代码和方法的种类。
说明:
• 参数列表不同包括:个数不同、类型不同和顺序不同。
• 仅仅参数变量名称不同是不可以的。
• 跟成员方法一样,构造方法也可以重载。
• 声明为final的方法不能被重载。
• 声明为static的方法不能被重载,但是能够被再次声明。
方法的重载的规则:
• 方法名称必须相同。
• 参数列表必须不同(个数不同、或类型不同、参数排列顺序不同等)。
• 方法的返回类型可以相同也可以不相同。
• 仅仅返回类型不同不足以成为方法的重载。
方法重载的实现:
方法名称相同时,编译器会根据调用方法的参数个数、参数类型等去逐个匹配,以选择对应的方法,如果匹配失败,则编译器报错,这叫做重载分辨。
再来一个例子:
package day24;public class Compute { public static int sum(int a,int b) { System.out.println("sum(int,int)"); return a + b; } public static double sum(double a,double b) { System.out.println("sum(double,double)"); return a + b; } public static int sum(int a,int b,int c) { System.out.println("sum(int,int,int)"); return a+b+c; } public static void test1(String s,int a) { } public static void test1(int a,String s) { }}
package day24;/* * 方法的重载 * 在一个类中可以有多个方法共享同一个名称 * 只要他们的参数不同就可以,根据参数类型 * 和参数数量来决定要调用的方法 * * 重载:具有相同的方法名称,不同的参数列表 * 不同的参数列表指的是:参数类型不同,参数数量不同,参数次序不同 * * public static int sum(int a,int b){} * 我们再确定是否重载的时候,判定依据是sum(int a,int b) * 至于public static int 这几个东西,我们不理会 */public class Test { public static void main(String[] args) { //Compute c = new Compute(); int sum = Compute.sum(3, 4); //int sum = c.sum(3, 4); System.out.println(sum); int sum1 = Compute.sum(5,1,2); System.out.println(sum1); double sum2 = Compute.sum(4.5,3.9); System.out.println(sum2); }}
构造方法的重载
package day26;public class Student{ String name; String stuNo; int age; String pickName; public Student() { /*name = null; stuNo = null; age = 0; pickName = null;*/ } public Student(String name) { this.name = name; } public Student(String name,String stuNo) { //this(name); this.name = name; this.stuNo = stuNo; } public Student(String name,String stuNo,int age) { //this(name,stuNo); this.name = name; this.stuNo = stuNo; this.age = age; } public Student(String name,String stuNo,int age,String pickName) { //this(name,stuNo,age); this.name = name; this.stuNo = stuNo; this.age = age; this.pickName = pickName; }}
package day26;//构造方法的重载public class TestStudent { public static void main(String[] args) { Student s1 = new Student(); printStudent(s1); Student s2 = new Student("张三"); printStudent(s2); Student s3 = new Student("张三","49"); printStudent(s3); Student s4 = new Student("张三","49",12); printStudent(s4); Student s5 = new Student("张三","49",12,"小张"); printStudent(s5); } public static void printStudent(Student s) { System.out.println("姓名:"+s.name); System.out.println("学号:"+s.stuNo); System.out.println("年龄:"+s.age); System.out.println("昵称:"+s.pickName); System.out.println("---------------------"); }}
0 0
- java方法重载(慎用重载)
- java方法重载2
- java中的方法重载
- Java方法重载
- java方法的重载
- java方法重载
- java方法重载
- Java---方法重载1
- java 方法的重载
- 十七、JAVA方法重载
- JAVA 方法重载
- JAVA 方法的重载
- java 方法的重载
- Java方法重载
- java方法重载
- java 构造方法重载
- Java方法的重载
- java方法重载
- 创建 Monitor 并测试 - 每天5分钟玩转 OpenStack(124)
- 在线用户信息统计&单用户登录
- 如何解决MySQL字符集乱码问题
- get post请求乱码问题
- epoch和iteration的区别
- Java方法重载
- eclipse中常用快捷键使用
- NYOJ-看美女
- poj3349
- 什么是hibernate懒加载?什么时候用懒加载?为什么要用懒加载?
- LruMemChunk SharedMemCache::getLru().end()
- 解开 Windows 下的临界区中的代码死锁
- io流
- Mysql-索引覆盖