THINK IN JAVA 学习笔记 对象篇 一

  面向对象方式表示问题的方式非常通用。同时使程序员不受限与任何特定的类型的问题。这种思想的实质:程序可以通过新类型的对象使自身适用于某个特定问题。

  Alan Kay总结的面向对象的五个基本特征:

  1 万物皆为对象。我的理解是没有抽象不出来的东西,任何事物都可以被抽象出来。

  2 程序是对象的集合,他们通过发送消息来告知彼此所要做的。我的理解是程序是由对象的交互实现的,消息是对象交互的请求调用。

  3 每个对象都有自己的一部分是其他的一个对象。这个简单,就是对象不是凭空来的,对象建立在已有对象的基础上。

  4 每个对象都有其类型。每个对象都是某个类的实例instance。

  5 某一特定类型的所有对象都可以接收同样的消息。

  要开发一个程序,最好的方法之一就是将对象想象为服务提供者。A

  如果我可以将问题从表象抽取出来,那么什么样的对象可以马上解决我的问题?

  按这样的思路很容易地就能把一个程序分解为对象的集合。

  A方法还有一个好处:有助于提高对象的内聚性。

  什么是内聚性?设计一个对象如果把过多的功能房在其中,就可能会发现功能太多了,不同的功能的代码容易相互产生不好的影响。我们需要的

  是更多的对象,每个对象都有一个它所能提供服务的内聚的集合。

  良好的面向对象设计是:

  每个对象都可以很好的完成一项任务,但是它并不试图做更多的事。

  程序分为类创建者,和客户端创建者(类使用者):

  类创建者应该把非必须暴露的部分隐藏起来。

  理由:

  被隐藏的部分,客户端程序员将不能够访问它,这意味着类的创建者可以任意修改被隐藏的部分。而不用担心对其他任何人造成影响。

  被隐藏的部分通常代表内部脆弱的部分,他们容易被不知情或粗心的客户端程序员所毁坏。所以隐藏起来可以减少bug。

  这就是一种访问控制。

 

  

  mark: java 的三个关键字在类的内部设定了边界:public private protected

  protected:与private 相当,差别仅在于继承的类可以访问protected成员但是不能访问private

  设计可被复用的对象需要丰富的经验和敏,锐的洞察力。但是一旦有了这样的设计,它就可以复用。代码复用是面向对象程序设计语言所提供的最了不起的优点之一。

  复用的两种简单方式:

  直接使用类的对象

  将对象置于某个新类中。我们称其为:创建了一个成员对象>这种方式成为组合 composition

  has-a 组个如果组合是动态发生的,称为聚合aggregation has-a 类似汽车拥有引擎

  在建立新类时应首先考虑组合,因为它更加简单灵活。

  对象的继承:

  在成员不变的情况下。不覆盖(overriding)基类的方法或在新类中添加新方法是没有意义的。

  在java的面向对象编程中,程序直到运行时才能确定代码的地址,这是在未知导出类具体类型时却能调用到正确代码的前提。

  要实现这个前提,面向对象程序设计语言使用了后期绑定的概念。

  编译器确保被调用方法的存在,并对参数和返回值执行类型检查。java oop符合此条件,所以也被成为强类型语言。

  单是java oop也并不知道将被执行的确切的代码。

  C++ 需要通过virtual关键字声明某个方法具备这个后期绑定的特性。

  java动态绑定是默认行为。不需要额外添加关键字。

转载于:https://www.cnblogs.com/xiejunNO001/p/4940901.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值