1、函数重载
所谓的函数重载:在一个类当中,允许函数重名现象的出现。其具有下面三个特征:1.两个或多个函数处于同一个类当中
2.函数的名相同
3.函数的参数列表不同
例如,文件Lesson4.java代码如下:
class Lesson4{
void funA(){
System.out.println("funA()");
}
void funA(int i){
System.out.println("funA(int i)");
}
void funA(int i,double j){
System.out.println("funA(int i,double j)");
}
}
文件Lesson4_2.java代码如下:
class Lesson4_2{
public static void main(String args []){
Lesson4 A = new Lesson4();
A.funA();
A.funA(10);
A.funA(1,2.0);
}
}
测试结果如下:
D:\Android\src>javac Lesson4.java
D:\Android\src>javac Lesson4_2.java
D:\Android\src>java Lesson4_2
funA()
funA(int i)
funA(int i,double j)
D:\Android\src>
2、构造函数的作用
例如 Lesson4_2 A = new Lesson4();
上述的new后面的 类名(); 就是所谓的构造函数,但是构造函数不是成员函数,它的基本特征如下:
1.构造函数没有返回值
2.构造函数的名称必须和类名相同
3.在编译器编译的时候后编译器会检查类里面是否有构造函数,如果没有的话,编译器会加上一个无参数内容为空的构造函数,有的话就不会添加。
如:
Lesson4(){
}
测试的时候修改Lesson4.java文件如下:
class Lesson4{
Lesson4(){
System.out.println("I am Lesson4()");
}
void funA(){
System.out.println("funA()");
}
void funA(int i){
System.out.println("funA(int i)");
}
void funA(int i,double j){
System.out.println("funA(int i,double j)");
}
}
修改Lesson4_2.java代码如下:
class Lesson4_2{
public static void main(String args []){
Lesson4 A = new Lesson4();
}
}
编译后执行,结果如下:
D:\Android\src>javac Lesson4.java
D:\Android\src>javac Lesson4_2.java
D:\Android\src>java Lesson4_2
I am Lesson4()
D:\Android\src>
在这里先总结构造函数的两个用途:
1.作用一:使用new调用构造函数,可以生成一个对象这就说明了一点,构造函数的调用不同于成员函数,成员函数是通过类名来调用的,而构造函数是通过 new 类名();的方式来调用的,其结果就是生成一个类的对象。
2.作用二:自己编写构造函数,为成员变量赋初始值。
例如,修改Lesson4.java代码如下:
class Lesson4{
String name;
int age;
}
当Lesson4_2.java中需要生成很多个对象,或者类里面的成员变量较多的时候,对变量进行赋值就会相当的麻烦,如:
Lesson4 A = new Lesson4();
A.name = "A";
A.age = 1;
Lesson4 B = new Lesson4();
B.name = "B";
B.age = 2;
Lesson4 C = new Lesson4();
C.name = "C";
C.age = 3;
.....
修改Lesson4.java代码后如下:
class Lesson4{
Lesson4(){
}
Lesson4(String n,int a){
name = n;
age = a;
}
String name;
int age;
}
同样实现生成对象和赋值操作就可以很简单:
Lesson4 A = new Lesson4("A",1);
Lesson4 B = new Lesson4("B",2);
Lesson4 C = new Lesson4("C",3);
....
同时这里很容易发现,构造函数也是可以重载的。
By Urien 2017年8月25日 20:34:23