在测试的路上,学习无止境。。。 相信自己,快乐每一天。。。 紧急通知: 支付宝急招资深软件测试工程师,详见 http://job.alipay.com/recruit/offerDetail.htm?offerId=21683,同时招聘资深测试开发工程师。有意者投递简历至:xin.maojx@alipay.com

谈一下java的构造函数

上一篇 / 下一篇  2009-08-03 19:50:20 / 天气: 晴朗 / 心情: 高兴 / 个人分类:JAVA 学习

上个星期终于下定决定要全面的、系统的学习JAVA语言,在众多语言中,选择JAVA,自然有它的理由,但我不想多说,我只想把每天学的JAVA知识,一点点积累下来,权当学习笔记吧。

首先,了解下JAVA的构造函数是做什么的?用来对NEW的对象进行初始化的(先分配存储空间,再调用构造函数)。比如初始化一个变量;

什么时候调用构造函数?在使用对象之前,先调用构造函数进行初始化,然后再使用此对象的其它方法;

构造函数的命名规则,和普通的方法一样么?答案是:不一样。构造函数的名字和类名必须要一样。

构造函数可以使用参数,且没有返回值。

下面我们举个例子,来看构造函数。

package exceise;

import java.util.*;
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 Exceise3 {

  public static void main(String[] args) {
  //for(int i = 0; i < 5; i++) {
  Tree t = new Tree(1);
  t.info();
  t.info("overloaded method");
  //}
  // Overloaded constructor:
  new Tree();
  }
}

 

结果如下:

Creating new Tree that is 1 feet tall
Tree is 1 feet tall
overloaded method: Tree is 1 feet tall
Planting a seedling

--------------------------------

可以看出:

Tree t = new Tree(1);
系统调用构造函数Tree(int i) ;

new Tree();

系统调用构造函数Tree();

那类中如果没有自定义构造函数,编译程序会自动生成一个构造函数。若有构造函数,编译程序就不会自动生成了。

至于在类TREE中,为什么会存在名字相同但参数不同的方法info,这涉及到重载,下次再讲。

不能根据返回值类型来判断重载的方法。

 

 


 

 

 

 

 

 


TAG:

 

评分:0

我来说两句

Open Toolbar