Think in java 答案_Chapter 4_Exercise 18

阅前声明: http://blog.csdn.net/heimaoxiaozi/archive/2007/01/19/1487884.aspx

/****************** Exercise 18 *****************
* Create a class with a String that is
* initialized using "instance initialization."
* Describe a use for this feature (other than
* the one specified in this book).
***********************************************/

public class E18_StringInstanceInitialization {
  String s;
  {
    s = "'instance initialization'";
  }
  public E18_StringInstanceInitialization() {
    System.out.println(
      "Default constructor; s = " + s);
  }
  public E18_StringInstanceInitialization(int i) {
    System.out.println(
      "int constructor; s = " + s);
  }
  public static void main(String args[]) {
    new E18_StringInstanceInitialization();
    new E18_StringInstanceInitialization(1);
  }
}

//+M java E18_StringInstanceInitialization

**The book states that the reason for instance initialization is to provide basic constructor activites for anonymous inner classes (which you haven’t learned about yet), because these cannot have constructor methods (constructors require names, and an anonymous inner class is anonymous – it has no name).

**The reason that you might use instance initialization in an ordinary class is to perform common activities before any constructor is called, especially those that are too complex to perform during initialization at the point of definition (an expression involving a for loop, for example, or one that involves opening and reading a file). Note that in the above example there are two constructors, and when you run the program you’ll see that instance initialization occurs before either constructor runs.
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值