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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 郑文博 中级黑马   /  2012-6-27 17:05  /  2267 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 郑文博 于 2012-6-27 21:24 编辑
  1. /*
  2.         使用LinkedList模拟一个队列数据结构。

  3.         队列:先进先出 First in First out  FIFO 如同一个水管。
  4. */

  5. import java.util.*;
  6. class DuiLie
  7. {
  8.         private LinkedList link;

  9.         DuiLie()//做构造函数的意义?
  10.         {
  11.                 link = new LinkedList();
  12.         }
  13.         
  14.         public void myAdd(Object obj)
  15.         {
  16.                 link.addFirst(obj);
  17.         }
  18.         public Object myGet()
  19.         {
  20.                 return link.removeLast();
  21.         }
  22.         public boolean isNull()
  23.         {
  24.                 return link.isEmpty();
  25.         }
  26. }

  27. class  LinkedListTest1
  28. {
  29.         public static void main(String[] args)
  30.         {
  31.                 DuiLie dl = new DuiLie();
  32.                 dl.myAdd("java01");
  33.                 dl.myAdd("java02");
  34.                 dl.myAdd("java03");
  35.                 dl.myAdd("java04");

  36.                 while(!dl.isNull())
  37.                 {
  38.                         System.out.println(dl.myGet());
  39.                 }
  40.         }
  41. }
复制代码
这段程序是用LinkedList模拟队列数据机构的先进先出,DuiLie类主要是对LinkedList的方法的自定义封装。
其中对里面12行的构造函数的使用有些看不懂了,这为什么要使用构造函数呢?还单独封装了一个对象,这样做有什么好处吗?求详细指教。

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

5 个回复

倒序浏览
本帖最后由 韦念欣 于 2012-6-27 17:19 编辑

1、这为什么要使用构造函数呢?
答:每一个类都要有一个构造函数,即使内容为空,也要写。而这段代码的构造函数是为了初始化成员变量link,生成一个LinkedList对象,以便下面的代码使用这个link对象来模拟队列的操作。如果不初始化这个link,那么接下来就什么都做不了。

2、单独封装了一个对象,这样做有什么好处吗?
答:这个类中,封装了 private LinkedList link 这个私有的对象,封装使程序局部化,易修改、好维护,安全性也高。
假如写了这个类,给别人使用的话,我们一般是不会给别人看到这个类的内部结构的。我们在操作这个link对象的时候,不会影响这个类外部代码,外部也不能影响内部操作,至于内部是如何操作这个link的,由程序员定。

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

回复 使用道具 举报
韦念欣 发表于 2012-6-27 17:09
1、这为什么要使用构造函数呢?
答:每一个类都要有一个构造函数,即使内容为空,也要写。而这段代码的构造 ...

不写构造函数,直接LinkedList link = new LinkedList();的话,后面不可以使用这个link吗? 成员变量只有被初始化才可以使用吗?
回复 使用道具 举报
郑文博 发表于 2012-6-27 18:06
不写构造函数,直接LinkedList link = new LinkedList();的话,后面不可以使用这个link吗? 成员变量只有 ...

构造函数的作用是为成员变量赋值,每个类都有自己的构造函数,你不写的话,系统会默认给你提供一个无参的构造函数,单独封装的好处是避免程序的泄漏,只有类的成员或方法才能操作private的对象,保证了程序的安全性,至于你说的不写构造函数直接LinkedList link = new LinkedList();的话,也是可以的,但是从程序的完善角度来讲,还是写上比较好,因为你不知道你的程序接下来会发生什么,所以你得先将它能有的功能全部给予出去,构造函数还是写的好

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

回复 使用道具 举报
李文龙 发表于 2012-6-27 19:02
构造函数的作用是为成员变量赋值,每个类都有自己的构造函数,你不写的话,系统会默认给你提供一个无参的 ...

真心多谢。
回复 使用道具 举报
构造函数是为了得到一个类的对象实例,相当于获得这个类型对象的入口,相当于你为了制作一件物品,你把必须的原料通过构造函数传进去,构造函数获得原料后,进行必要的分配,配置。
构造函数是用来初始化一个对象的,当一个类被实例化的时候,自动执行构造函数对这个实例进行初始化
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马