对象概论总结

抽象过程

  • 每一个对象看起来都有点像一个微型计算机--它具有状态,还具有操作,用户可以要求对象执行这些操作
  • 可以把消息想象为对某个特定对象的方法的调用请求
  • “类”也就是“类型”的同义词
  • 对象具有状态、行为和标识
  • 每一个对象在内存中都有唯一的地址

每个对象都有一个接口

  • 面向对象程序设计的挑战之一,就是问题空间的元素和解空间的对象之间创建一对一的映射

被隐藏的具体实现

  • public表示紧随其后的元素对任何人都是可用的
  • private表示除了类型创建者和类型的内部方法之外的任何人都不能访问元素
  • protected与private作用相当,差别仅仅在于继承的类可以访问protected的成员,当是不能访问private成员
  • 默认的访问权限就是类可以访问同一个包中的其他类的成员,但是在包之外这些成员就如同指定了private一样

复用具体实现

  • 代码复用是面向对象程序设计语言所提供过的最了不起的优点之一
  • 使用现有的类合成新的类,这种概念被称组合,如果组合是动态发生的,那么它通常被称为聚合,组合经常被视为"has-a"(拥有)关系.
  • 编译器必须对通过继承而创建的类世家编译时的限制
  • 所有可以发送给基类对象的消息同时也可以发送给导出类对象

伴随多态的可互换

  • 编译器不可能传统意义上的函数调用,一个非面向对象编程的编译器产生的函数调用会引起所谓的前期绑定,这个术语可能以前从来没有听说过,可能从未想过函数调用的其他方式,这么做意味着编译器将产生对一个具体函数名字的调用,而运行时将这个调用解析到将要被执行的代码的绝对地址,然而在OOP中,程序直到运行时才能够确定代码的地址,所以当消息发送到一个泛化对象的时候,必须采用其他机制.
  • 在某些语言中,必须明确的声明希望某个方法具备后期绑定属性所带来的灵活性(C++是使用virtual关键字来进行实现的),在这些语言中,方法默认情况下不是动态绑定的,而在Java中动态绑定是默认行为,不需要添加额外的关键字来实现多态.
  • 转型 cast
  • 分离的 decoupled

单根继承结构

  • 除了C++以外的所有OOP语言,都是单继承的,这就保证了所有的类都是基于相同的基本类型,另一种C++结构是无法确保所有对象都是基于同一个基本类型,从向后兼容的角度来看,这么做能够更好的适应C模型,而且受限很少,但是当要进行完全的面向对象的程序设计的时候,则必须构建自己的继承体系,使得它可以提供其他OOP语言内置的便利,并且在所获得的任何新类库种,总会用到一些不兼容的接口,需要花些理器来使新街口融入到你的设计种.
  • 单继承结构使垃圾回收器的实现变得容易的多,而垃圾回收器正式Java相对C++的重要改进之一,由于所有对象都保证具有其他类型信息,因此不会因为无法确定对象的类型而陷入了僵局,这对于系统级操作显得尤其重要,并且给编程带来便利.
posted on 2021-08-04 00:27  心悦君兮君不知-睿  阅读(101)  评论(0编辑  收藏  举报