think in java 读后感(一)

来源:互联网 发布:mac镜像制作u盘启动盘 编辑:程序博客网 时间:2024/04/28 18:36

从来没有自己写过blog今天算是第一次自己动手写吧,心情很激动
这个星期的新任务是员工培训要求每人要讲授think in java的心得,我要讲的还算简单4,5章,算了闲话不写了做教案哟!

第四章初始化和清除

    “初始化”和“清除”是这些安全问题的其中两个。许多C程序的错误都是由于程序员忘记初始化一个变量造成的。对于现成的库,若用户不知道如何初始化库的一个组件,就往往会出现这一类的错误。清除是另一个特殊的问题,因为用完一个元素后,由于不再关心,所以很容易把它忘记。这样一来,那个元素占用的资源会一直保留下去,极易产生资源(主要是内存)用尽的后果。C++为我们引入了“构建器”的概念。这是一种特殊的方法,在一个对象创建之后自动调用。Java也沿用了这个概念,但新增了自己的“垃圾收集器”,能在资源不再需要的时候自动释放它们。
    对于初始化,可以把它想象成每个程序中的initialize()方法,也就是说在程序开始执行的时候最先会调用这个方法,在JAVA中引入了构造函数这个概念(也叫构建器)
class Rock {
  Rock() {     // 此方法就是一个构造函数,它的特点是没有返回值,并且和类名一致,这也是构造函数必须满足的两个条件
    System.out.println("Creating Rock");
  }
}

public class SimpleConstructor {
  public static void main(String[] args) { for(int i = 0; i < 10; i++)
      new Rock();
  }
}
这是一个基本例程!

class Tree {
  int height;
  Tree() {
    prt("Planting a seedling");
    height = 0;
  }
  Tree(int i) {
    prt("Creating new Tree that is "
        + i + " feet tall");
    height = i;
  }
  void info() {
    prt("Tree is " + height
        + " feet tall");
  }
  void info(String s) {
    prt(s + ": Tree is "
        + height + " feet tall");
  }
  static void prt(String s) {
    System.out.println(s);
  }
}

public class Overloading {
  public static void main(String[] args) {
    for(int i = 0; i < 5; i++) {
      Tree t = new Tree(i);
      t.info();
      t.info("overloaded method");
    }
    // 构造函数的重载
    new Tree();
  }
}
这是一个带参数的构造函数,当实例化时,依据参数类型来决定构造通过哪个构造函数来实例化对象
若方法有同样的名字,Java怎样知道我们指的哪一个方法呢?这里有一个简单的规则:每个过载的方法都必须采取独一无二的自变量类型列表。参数相同次序不同的构造函数时两种不同的构造函数.
值得注意的是,如果已经定义了一个构建器(无论是否有自变量),编译程序都不会帮我们自动合成一个:
class Bush {
Bush(int i) {}
Bush(double d) {}
}

现在,假若使用下述代码:
new Bush();
编译程序就会报告自己找不到一个相符的构建器。就好象我们没有设置任何构建器,编译程序会说:“你看来似乎需要一个构建器,所以让我们给你制造一个吧。”但假如我们写了一个构建器,编译程序就会说:“啊,你已写了一个构建器,所以我知道你想干什么;如果你不放置一个默认的,是由于你打算省略它。”
所以,当你在程序中设置了构造函数,有需要的话,还需要构建一个默认的构造函数.




this关键字

原创粉丝点击