楼主: omencathay

[精华] Think in java读书笔记

[复制链接]
论坛徽章:
33
2011新春纪念徽章
日期:2011-01-25 15:41:012012新春纪念徽章
日期:2012-02-13 15:11:52ITPUB 11周年纪念徽章
日期:2012-10-10 13:11:14兰博基尼
日期:2013-11-04 12:55:50马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上加薪
日期:2014-02-19 11:55:142012新春纪念徽章
日期:2012-02-13 15:11:52
31#
 楼主| 发表于 2003-6-25 17:02 | 只看该作者

Re: 我也正看到第3章,不过是中文版,我会经常来顶你帖子的

最初由 alin19 发布
[B]现在边看边运行例子 [/B]


,ok 希望大家能加入进来,以后可能会不断有补充,昨晚把第四章看了一半把析构函数那看完了,一会总结一下 

使用道具 举报

回复
论坛徽章:
0
32#
发表于 2003-6-25 17:46 | 只看该作者
我也正在看中文版,能告诉我相关的图形在哪里?因为有许多段落是针对于图形描述的

使用道具 举报

回复
论坛徽章:
33
2011新春纪念徽章
日期:2011-01-25 15:41:012012新春纪念徽章
日期:2012-02-13 15:11:52ITPUB 11周年纪念徽章
日期:2012-10-10 13:11:14兰博基尼
日期:2013-11-04 12:55:50马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上加薪
日期:2014-02-19 11:55:142012新春纪念徽章
日期:2012-02-13 15:11:52
33#
 楼主| 发表于 2003-6-25 19:39 | 只看该作者
最初由 crazyIT 发布
[B]我也正在看中文版,能告诉我相关的图形在哪里?因为有许多段落是针对于图形描述的 [/B]


你是指uml图吗?

使用道具 举报

回复
论坛徽章:
33
2011新春纪念徽章
日期:2011-01-25 15:41:012012新春纪念徽章
日期:2012-02-13 15:11:52ITPUB 11周年纪念徽章
日期:2012-10-10 13:11:14兰博基尼
日期:2013-11-04 12:55:50马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上加薪
日期:2014-02-19 11:55:142012新春纪念徽章
日期:2012-02-13 15:11:52
34#
 楼主| 发表于 2003-6-25 20:05 | 只看该作者
4:Initialization & Cleanup[/COLOR]

用析构(构造)函数来初始化对象或者类;

在你应用一个对象或者类的时候,首先应该对其进行初始化之后在后再调用它;

java中,当一个类含有构造函数的时候,在创建一个新的对象的时候,java能够自动对其进行初始化;

那么构造函数应该如何命名呢?
java 中的构造函数沿用了c++的方式
首先,作为一个类的成员,构造函数的命名应当与这个类所协调;其次,java的编译器必须知道该不该自动调用这个构造函数;
综合以上两点,构造函数的命名必须与类的命名一致,这样java就能够在这个类被创建或者引用的时候,利用这个类的构造函数来对其进行初始化;

//exapmle;
//simpleConstructor.java

class Rock{
    Rock()[/COLOR]
{
System.out.println("Creating Rock!";
}
}

public class SimpleConstructor{
public static void main(String[] args){
for(int i=1;i<6;i++){
new Rock();
}
}
}

使用道具 举报

回复
论坛徽章:
33
2011新春纪念徽章
日期:2011-01-25 15:41:012012新春纪念徽章
日期:2012-02-13 15:11:52ITPUB 11周年纪念徽章
日期:2012-10-10 13:11:14兰博基尼
日期:2013-11-04 12:55:50马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上加薪
日期:2014-02-19 11:55:142012新春纪念徽章
日期:2012-02-13 15:11:52
35#
 楼主| 发表于 2003-6-25 20:11 | 只看该作者
当对象被创建的时候
new Rock();

存贮区域被分配并且构造函数被调用了
注意:new Rock();中的Rock 是指的类,不要和它下面的构造函数 Rock()相混淆,另外java大小写 敏感,注意区分大小写;

使用道具 举报

回复
论坛徽章:
33
2011新春纪念徽章
日期:2011-01-25 15:41:012012新春纪念徽章
日期:2012-02-13 15:11:52ITPUB 11周年纪念徽章
日期:2012-10-10 13:11:14兰博基尼
日期:2013-11-04 12:55:50马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上加薪
日期:2014-02-19 11:55:142012新春纪念徽章
日期:2012-02-13 15:11:52
36#
 楼主| 发表于 2003-6-25 20:17 | 只看该作者
让我们再给构造函数一个参数看看:

//example;

//simpleConstructor.java

class Rock{
    Rock(int i){
    System.out.println("Creating Rock"+i+"you are lazy?";
}
}

public class simpleConstructor{
public static void main(String[] args){
for(int i=1;i<6;i++){
new Rock(i);
}
}
}

可以自己运行一下,看看结果如何:

使用道具 举报

回复
论坛徽章:
33
2011新春纪念徽章
日期:2011-01-25 15:41:012012新春纪念徽章
日期:2012-02-13 15:11:52ITPUB 11周年纪念徽章
日期:2012-10-10 13:11:14兰博基尼
日期:2013-11-04 12:55:50马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上加薪
日期:2014-02-19 11:55:142012新春纪念徽章
日期:2012-02-13 15:11:52
37#
 楼主| 发表于 2003-6-25 20:29 | 只看该作者
讨论:为什么使用析构函数[/COLOR]

因为减少了很多类的问题,使代码可读易懂

另:构造函数没有返回值,也能返回你所需要的东西

使用道具 举报

回复
论坛徽章:
55
生肖徽章:虎
日期:2006-09-06 21:14:232011新春纪念徽章
日期:2011-01-25 15:41:502011新春纪念徽章
日期:2011-01-25 15:42:152011新春纪念徽章
日期:2011-01-25 15:42:332011新春纪念徽章
日期:2011-01-25 15:42:56管理团队成员
日期:2011-05-07 01:45:082012新春纪念徽章
日期:2012-01-04 11:49:542012新春纪念徽章
日期:2012-02-13 15:11:182012新春纪念徽章
日期:2012-02-13 15:11:182012新春纪念徽章
日期:2012-02-13 15:11:18
38#
发表于 2003-6-25 22:42 | 只看该作者
最初由 omencathay 发布
[B]讨论:为什么使用析构函数[/COLOR]

因为减少了很多类的问题,使代码可读易懂

另:构造函数没有返回值,也能返回你所需要的东西 [/B]


如果我记得不错,析构函数是指类似于finalize的功能的。在C++中是不同于构造函数的。两者不能混用。如果我记错了也请大家指出。对中文的术语一向不是很清楚。

使用道具 举报

回复
论坛徽章:
0
39#
发表于 2003-6-26 09:11 | 只看该作者
比如第一章中的树型图
我在中文版中没看见一副图片



原文:
多形对象的互换使用
通常,继承最终会以创建一系列类收场,所有类都建立在统一的接口基础上。我们用一幅颠倒的树形图来阐明这一点(注释⑤):

⑤:这儿采用了“统一记号法”,本书将主要采用这种方法。

35页图

对这样的一系列类,我们要进行的一项重要处理就是将衍生类的对象当作基础类的一个对象对待。这一点是非常重要的,因为它意味着我们只需编写单一的代码,令其忽略类型的特定细节,只与基础类打交道。这样一来,那些代码就可与类型信息分开。所以更易编写,也更易理解。此外,若通过继承增添了一种新类型,如“三角形”,那么我们为“几何形状”新类型编写的代码会象在旧类型里一样良好地工作。所以说程序具备了“扩展能力”,具有“扩展性”。
以上面的例子为基础,假设我们用Java写了这样一个函数

使用道具 举报

回复
论坛徽章:
33
2011新春纪念徽章
日期:2011-01-25 15:41:012012新春纪念徽章
日期:2012-02-13 15:11:52ITPUB 11周年纪念徽章
日期:2012-10-10 13:11:14兰博基尼
日期:2013-11-04 12:55:50马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上加薪
日期:2014-02-19 11:55:142012新春纪念徽章
日期:2012-02-13 15:11:52
40#
 楼主| 发表于 2003-6-26 09:23 | 只看该作者
最初由 yining 发布
[B]

如果我记得不错,析构函数是指类似于finalize的功能的。在C++中是不同于构造函数的。两者不能混用。如果我记错了也请大家指出。对中文的术语一向不是很清楚。 [/B]


我是根据自己的理解将英文版的译成中文,其中会有谬误,恳请大家指正,相互学习

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表