Thinking-in-Java-读书笔记-1-对象导论

前言

从本章开始,逐渐记录笔者在阅读「Thinking in Java」时,内容的积累、代码的实践和个人编程的心得,重要的是个人的成长。正式工作将近一年的我,有必要重新温故一下Java的核心基础,巩固自身的硬实力,从根本感受Java语言的魅力,而不是局限于敲代码,完成产品需求。更重要的是领悟每种语言的特色,融入其中,提升自己,感受学习带来的快乐!足以!

正文

1. Java 五个基本特性

  1. 万物皆为对象
  2. 程序是对象的集合,他们通过发送消息来告知彼此所要做的。
  3. 每个对象都有自己的由其他对象所构成的存储。
  4. 每个对象拥有其类型。
  5. 某一特定类型所有对象都已接收同样的消息。

2. 每个对象都有一个接口

3. 每个对象都提供服务

将对象看做是服务提供者有一个好处,它有助于提高对象的内聚性。这不仅在设计过程中非常有用,而且当其他人试图理解你的代码活重用某个对象时候, 如果他们看出对象多能提供的服务的价值,它会调整对象以适应其设计的过程变得简单很多。

4. 被隐藏的具体实现

类创建者的目标是构建类,这种类只向客户端程序员暴露必需的部分,而隐藏其他部分。这以为着类创建者可以任意修改被隐藏的部分,而不用担心对其他任何人造成影响,被隐藏的部分通常对象内部脆弱的部分,它们很容易被粗心或者不知内情的客户端程序员所毁坏,因此将实现隐藏起来可以减少程序的 bug。

5. Java 用三个关键字在类的内部设定边界

publicprivateprotected
任何人都可以用除类型创建者和内部方法,任何人不能访问仅继承的成员可以访问

6. 复用具体实现

代码复用是面向对象程序设计语言所提供的最了不起的优点之一。在建立新类时,应该优先考虑组合,因为它更加简单灵活,如果采用这种方式,设计会变得更加清晰,一旦有了一些经验之后,便能够看出必须使用继承的场合了。

7. 继承

继承

void doSomeThing(Shape shape) {
    shape.draw();
    // ....
    shape.setColor();
 }
Circle circle = new Circle();
doSomeThing(circle);

Circle被传入到预期接收的Shape,向上转型,这就是泛型的使用,当调用基类的方法时,会主动定位到指定的具体对象,调用该对象的具体实现方法。

8. 容器

需要对容器有所选择,主要有两个原因:1. 不同容器提供了不同类型的接口和外部行为。堆栈相比于队列就具备不同的接口和行为。2. 不同的容器对某些操作具有不同的效率,最好的例子便是 ArrayListLinkedList

9. 对象的创建和生命周期

在使用对象时,最关键的问题之一便是它们的生成和销毁方式,每个对象为了生存都需要资源,尤其是内存,当我们不再需要一个对象时候,它必须被清理掉,使其占有的资源可以被释放和重用。

10. 异常处理:处理错误

异常处理将错误处理直接置于编程语言中,有时候甚至置于操作系统中。异常处理不是面向对象的特征–尽管在面向对象语言中异常常被表示成一个对象,异常处理在面向对象语言出现之前就已经存在了。

11. 并发编程

频发的操作不可能允许我们等上一个操作结束才能进行下一个操作,这个时候就需要并发执行,很早计算机就已经有了这个概念,就是在同一个时刻处理多个任务的思想。

12. Java 与 Internet

总结

OOP 和 Java 也许并不适合所有人,重要的是正确评估自己的需求,并决定 Java 是否能够最好的满足这些需求,还是使用其他的编程系统才是更好的选择,如果知道自己的需求在可预见的未来会变得非常特殊,并且 Java 可能不满足你的具体限制,那么就应该考虑其他的选择了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值