java_初始化与清理

来源:互联网 发布:李小龙死因知乎 编辑:程序博客网 时间:2024/05/06 15:36

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所代表的的就是当前被操作的对象

0 0