1.构造器
通过调用构造器,确保每个对象都得到初始化。
在类的创建过程中,可以定义其构造器,这样在操作对象前其对应的构造器即会被自动调用
构造器才采用与类相同的名字,同C++中的构造函数相同,即便不写出,系统会自动为相应的类加上一个不含有任何操作的默认构造器
下面给出程序实例
import java.util.*;
class tank{
tank(){
System.out.println("构造函数调用成功!");
}
}
public class FirstStep{
public static void main(String[] args){
tank i=new tank();
tank j=new tank();
}
}
结果如下:
构造函数调用成功!
构造函数调用成功!
因为程序用有两个属于tank类的对象被创建,所以构造函数会被调用两次
当然作为构造函数,是可以含有参数的,方法同一般方法的写法一致,就不多说,构造器其本质就是方法,是与类绑定的方法,就像是买咖啡送汤匙一样,每买一份咖啡,就会有一个汤匙;
2.方法重载
简单而言就是相同的词含有不同的含义,在不同的条件下产生不同的作用,就像是猪头,一般来说是骂人的话,但是在情侣之间,就不一定要这样理解了。方法 的重载也一样,同一种方法在处理不同的问题时采用不同的处理方式,这就是方法重载
下面给出构造器的重载,上一节中已经说过,构造器本身就是方法,可以理解为函数的重载,重载的方式是多种多样的,有(1)有无参数(2)参数类型(3)参数个数
实例代码:
import java.util.*;
class tank{
tank(){
System.out.println("一般的无参构造器!");
}
tank(int i){
System.out.println("以整型"+i+"为形参的构造器");
}
tank(String a){
System.out.println("以字符串"+a+"为形参的构造器");
}
tank(int a,int b){
System.out.println("同时含有两个整型"+a+" "+b+"的形参的构造器");
}
}
public class FirstStep{
public static void main(String[] args){
tank i=new tank();
tank j=new tank(1);
tank k=new tank("Hello");
tank q=new tank(1,2);
}
}
运行结果:
一般的无参构造器!
以整型1为形参的构造器
以字符串Hello为形参的构造器
同时含有两个整型1 2的形参的构造器
同理,非构造函数的重载方法也是相同的,主要重载方式与前三种相同
稍注意的是在重载函数中,若给的形参在重载函数中找不到与之对应的具有同类型形参的函数
那么给出的形参类型会发生向上转化比如如果将上述的tank(int a)改成tank(float a)那么第一个对象i被创建后输出的语句会变成“以整型1.0为形参的构造器”也就是说给出的形参被转化型了float型,这就好比是一群人去组团旅游,买门票的时候单人票价20,团购价10人共160元,但是这群人只有9个人,很明显虽然人数不足,直接把他当成10不就好了,毕竟这样更加省钱
Attention:
若是char型的数据找不到,会被提升为int型也就是原char型的ASCII码,比如a会被转化成97
可能有人会想到根据方法的返回值类型来重载函数,但是若是单纯的调用函数比如f(),无法区分它的返回值类型,所以这种方法是行不通的
4.this 关键字
在方法的内部实现对当前的对象的引用,这时这要用到this关键字
例如在方法的最后需要返回这个对象进一步操作,这时就可以使用this关键字
举个例子
import java.util.*;
class tank{
static int i=1;
tank f(){
i++;
return this;
}
void show(){
System.out.println("i="+i);
}
}
public class FirstStep{
public static void main(String[] args){
tank j=new tank();
j.f().f().f().show();
}
}
运行结果:
i=4;
从例子中可以看出this所代表的的就是当前被操作的对象