tij3笔记 004

•    以构造器确保初始化
构造器是类的特殊方法
若类具有构造器,则该类之对象被创建时java会在用户操作对象之前自动调用相应的构造器,以确保初始化。
命名:构造器采用与类相同的名称(因而“每个方法均首字母小写”的代码风格对其不适用)。
构造器可带参,可在初始化对象时提供实际参数。
构造器并无返回值,这与返回值为空(void)不同。
•    方法重载method overloading
很明显构造器名仅能有一个。但有如下情况需要两个构造器:一个带参(如文件名字符串,自该文件创建对象),一个不带参(直接创建对象)。这时牵扯到“方法重载”之概念:令名称相同但参数不同的构造器(亦可其它方法)同时存在。
为区分不同相同名字的方法,每个重载的方法都必须有一个独一无二的参数类型列表。
涉及基本类型的重载
以返回值区分重载方法是行不通的。
缺省构造器:若无构造器则编译器将自动提供缺省(无参)构造器,但若定义构造器但创建对象时发生错误(如带参等)将致使编译器报错。

this关键字:this关键字用于方法内,表示对“调用方法的那个对象”的引用。
在方法内部调用同一个类的方法就不必使用this,直接调用之即可。
有时一个类拥有多个构造器,若欲于构造器中调用另一构造器,则可利用this关键字。在构造器中,若为this添加参数列表,则将产生对符合此参数列表的某个构造器的明确调用。这是直接的调用其它构造器的途径。
注意-除构造器之外,编译器禁止任何其它方法调用构造器。
见详例:
public class Flower{
  int petalCount = 0;
  String s = new String("null");
  Flower(int petals){ //构造器一,整型参,应输出参数
    petalCount = petals;
    System.out.println("Constructor w/ int arg only, petalCount="+petalCount);
  }
  Flower(String ss){ //构造器二,字符串参,输出字符串
    System.out.println("Constructor w/String arg onlym s="+ss);
    s=ss;
  }
  Flower(String s,int pentals){ //构造器三
    this(pentals); //调用构造器一
    this.s = s; //this的又一用法,为这个类中的对象赋值
    System.out.println("String & int args");
  }
  Flower(){ //构造器四,无参
    this("hi",47); //调用构造器三
    system.out.println("default constructor (no args)");
  }
  void print(){
    System.out.println("pentalCount="+pentalCount+"s="+s);
  }
  public static void main(String[] args){
    Flower x = new Flower(); //调用无参构造器,其将调用构造器三,而后分别调用构造器一和二
    x.print();
  }
}

再议static
•    清除(cleanup):终结(finalization)和垃圾回收(garbage collection)
java提供一种类中的特殊方法:finalization(),它“应”具备如下工作原理:一旦垃圾回收器准备好释放对象占用的存储空间,将首先调用其finalization方法,并在下一次垃圾回收工作发生时才真正回收对象占用的内存。
因此可以考虑运用finalization方法,在“垃圾回收时刻”做一些(清除)工作。
这里要注意一些问题:
1、对象可能不被回收
2、垃圾回收不等于c++中用以销毁对象的“析构”
有此两前提,则可知不该将finalization()方法作为通用的清除方法,须知:
3、垃圾回收只与内存相关
也即:垃圾回收器存在的唯一原因是为了回收程序不再使用的内存,因而任何同垃圾回收相关的方法也同内存(及其回收)相关。

java与c++不同,java不允许创建局部对象,必须使用new。可以暂时认为垃圾收集机制的存在使得java没有析构函数。若希望进行进行除释放存储空间之外的清除工作,还是需要自行明确调用恰当的方法。
依然说明:无论“垃圾回收”还算“终结”,都不保证一定发生。除非面临内存耗尽,jvm不会浪费时间在回收垃圾上。
•    成员初始化
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值