Topic: 可否用程序实例解释一下什么是构造函数?

  Print this page

1.可否用程序实例解释一下什么是构造函数? Copy to clipboard
Posted by: gumuyang
Posted on: 2007-02-16 08:39

对构造函数一直弄不懂,网上讲的概念都差不多,基本内容如下:

构造函数用于对对象的初始化,以前在C中这活是由程序员手工来干的,但显然我们常会忘记去初始化应该初始化的对象或是多次初始化,因而产生错误。所以C++中引入构造函数来自动完成这个工作。构造函数与类同名,无返回值。如果你不自己写一个构造函数,编译器会为你建一个缺省构造函数。如果构造函数有参数,则必须在建对象时提供参数。

但这段话还是让我无法理解构造函数,又找不到相关实例,可否请哪位达人用实例解释一下怎么样才是构造函数?(最好不止一个例子)

2.Re:可否用程序实例解释一下什么是构造函数? [Re: gumuyang] Copy to clipboard
Posted by: hzyman
Posted on: 2007-02-16 12:35

class A{
iint i;
float f;
A(){
i=0;
f=0;
}
A(int x,float y){
i=x;
f=y;
}
}

3.Re:可否用程序实例解释一下什么是构造函数? [Re: gumuyang] Copy to clipboard
Posted by: jameszhang
Posted on: 2007-02-16 19:51

实例书上都有啊,关键是否理解构造的含义!
对象都是构造出来的,所以得需要构造对象的方法,因为对象构造的出来的方法很多,所以构造方法要重载!
对于对象都创建有很多经验,被总结了五种常见的模式!书上都有uml图以及代码

4.Re:可否用程序实例解释一下什么是构造函数? [Re: gumuyang] Copy to clipboard
Posted by: 饭特稀
Posted on: 2007-02-17 17:12

import java.util.*;
public class ConstructorTest {
  public static void main(String[] args) {
    Employee[] staff = new Employee[3];
    staff[0] = new Employee("Harry",40000);
    staff[1] = new Employee(60000);
    staff[2] = new Employee();
    
    for(int i =0;i<3;i++){
      System.out.println("name =" + staff[i].getName()
      + ",id =" + staff[i].getId()
      + ",salary =" + staff[i].getSalary());
    }
  }
}
class Employee{
  private static int nextId;
  
  private int id;
  private String name = "";
  private double salary;
  
  public Employee(String n,double s){
    this.name = n;
    this.salary = s;
  }
  
  public Employee(double s){
    this("Employee #" + nextId,s);
  }
  
  public Employee(){
  }
  
  public String getName(){
    return name;
  }
  
  public double getSalary(){
    return salary;
  }
  
  public int getId(){
    return id;
  }
  
  static{
    Random generator = new Random();
    nextId = generator.nextInt(10000);
  }
  
  {
    id = nextId;
    nextId++;
  }
}

有兴趣就看一下这个例子吧
三个不同参数的构造函数,以及在一个构造函数中调用另外一个构造函数的用法
当new 一个该类的实例的时候,会根据参数去调用不同的构造函数
还有无参数的默认构造函数他有默认的初始化,当然你也可以改变他的初始化
还有可以看一下他们的执行顺序,先是静态的语句块,然后是初始化语句块,然后是构造函数


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923