A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© hg3093483 中级黑马   /  2013-3-19 11:39  /  1440 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

小弟 再看毕向东老师的视频,讲到的面向对象时,在构造函数这里,感觉对这个名词的概念很模糊,哪位大神给讲一下 构造函数的具体 描述和实际当中的用法 呢??

点评

再次提醒:如果问题未解决,请继续追问回复者,如果问题已经解决,请将分类改为“已解决”,否则将扣除技术分,谢谢  发表于 2013-3-20 19:23
如果你的问题已经得到解决,请及时将主题改为[已解决],如果还有问题请继续追问,谢谢  发表于 2013-3-20 12:01

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

4 个回复

倒序浏览
      每创建一个类的实例都去初始化它的所有变量是乏味的。如果一个对象在被创建时就完成了所有的初始工作,将是简单的和简洁的。因此,Java在类里提供了一个特殊的成员函数,叫做构造函数(Constructor)。
  一个构造函数是对象被创建时初始对象的成员函数。它具有和它所在的类完全一样的名字。一旦定义好一个构造函数,与new运算符一起使用,创建对象时就会自动调用它。构造函数没有返回类型,即使是void类型也没有。这是因为一个类的构造函数的返回值的类型就是这个类本身。构造函数的任务是初始化一个对象的内部状态,所以用new操作符创建一个实例后,立刻就会得到一个清楚、可用的对象。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
  1. 一般我们讲的“函数”就是“方法”;
  2. 构造函数=构造方法;
  3. 构造方法是一种特殊的方法,具有以下特点。
  4. (1)构造方法的方法名必须与类名相同。
  5. (2)构造方法没有返回类型,也不能定义为void,在方法名前面不声明方法类型。
  6. (3)构造方法的主要作用是完成对象的初始化工作,它能够把定义对象时的参数传给对象的域。
  7. (4)一个类可以定义多个构造方法,如果在定义类时没有定义构造方法,则编译系统会自动插入一个无参数的默认构造器,这个构造器不执行任何代码。
  8. (5)构造方法可以重载,以参数的个数,类型,或排列顺序区分。
  9. java 构造函数的执行过程
  10. 类初始化时构造函数调用顺序:
  11. (1)初始化对象的存储空间为零或null值;
  12. (2)调用父类构造函数;
  13. (3)按顺序分别调用类成员变量和实例成员变量的初始化表达式;
  14. class Dollar {
  15. Money m = new Money();
  16. Rmb r = new Rmb();
  17. public Dollar() {
  18. System.out.println("Dollar is construct!");
  19. }
  20. public static void main(String[] args) {
  21. new Dollar();
  22. }
  23. }
  24. class Money {
  25. public Money() {
  26. System.out.println("Money is construct!");
  27. }
  28. }
  29. class Rmb {
  30. public Rmb() {
  31. System.out.println("RMB is construct!");
  32. }
  33. }
  34. 输出结果:
  35. Money is construct
  36. RMB is construct
  37. Dollar is construct!
  38. JAVA 与C#构造函数执行顺序的不同之处
  39. public static void main(String[] args)
  40. {
  41. Child child = new Child();
  42. }
  43. }
  44. class Parent
  45. {
  46. Parent()
  47. {
  48. System.out.println("to construct Parent.");
  49. }
  50. }
  51. class Child extends Parent
  52. {
  53. Child()
  54. {
  55. System.out.println("to construct Child.");
  56. }
  57. Delegatee delegatee = new Delegatee();
  58. }
  59. class Delegatee
  60. {
  61. Delegatee()
  62. {
  63. System.out.println("to construct Delegatee.");
  64. namespace ConsoleApplication1
  65. {
  66. public class Test
  67. {
  68. public static void Main(String[] args)
  69. {
  70. Child child = new Child();
  71. }
  72. }
  73. class Parent
  74. {
  75. public Parent()
  76. {
  77. Console.WriteLine("to construct parent");
  78. }
  79. }
  80. class{
  81. public Child()
  82. {
  83. Console.WriteLine("to construct Child.");
  84. }
  85. Delegatee delegatee = new Delegatee();
  86. }
  87. class Delegatee
  88. {
  89. public Delegatee()
  90. {
  91. Console.WriteLine("to construct Delegatee.");
  92. }
  93. }
  94. }
  95. 结果是
  96. to construct Delegatee.
  97. to construct Child.
  98. to construct Parent.
  99. 使用构造器时需要记住:


  100. 1.构造器必须与类同名(如果一个源文件中有多个类,那么构造器必须与公共类同名)

  101. 2.每个类可以有一个以上的构造器

  102. 3.构造器可以有0个、1个或1个以上的参数

  103. 4.构造器没有返回值

  104. 5.构造器总是伴随着new操作一起调用

复制代码

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
以下个人见解,仅供参考 :

构造函数就是构造方法;最主要是作用就是实例化类的。
比如你写了一个Person类一样。这时他只是声明,你不能用。就好比我说“我让你去找个人。”你靠这句话是找不到我要找的人。
那  Person person=new Person(); 这里就是给Person实例化了。也就是你可以用person点出东西来了。
也就是说你要用这个类必须先把他构造出来才能用。

构造方法是一种特殊的方法,具有以下特点。
(1)构造方法的方法名必须与类名相同。
(2)构造方法没有返回类型,也不能定义为void,在方法名前面不声明方法类型。
(3)构造方法的主要作用是完成对象的初始化工作,它能够把定义对象时的参数传给对象的域。
(4)一个类可以定义多个构造方法,如果在定义类时没有定义构造方法,则编译系统会自动插入一个无参数的默认构造器,这个构造器不执行任何代码。
(5)构造方法可以重载,以参数的个数,类型,或排列顺序区分。
java 构造函数的执行过程
类初始化时构造函数调用顺序:
(1)初始化对象的存储空间为零或null值;
(2)调用父类构造函数;
(3)按顺序分别调用类成员变量和实例成员变量的初始化表达式;

注意:
class Person{
        Person();//这就是默认构造。当你类中没有构造方法时,系统会为你自动建一个。如果你有带参的构造方法如(Person(int age)),系统就不会建Person()这个默认构造。如果你调用时没写默认构造而又用调用默认构造的话会报错。

}

评分

参与人数 1技术分 +1 收起 理由
贾文泽 + 1

查看全部评分

回复 使用道具 举报
你记构造方法的特点和调用顺序就好了,到时候你再把方法重写,方法重载做下对比就好理解了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马