读书笔记(java面向对象编程)

首记

本篇博客是本人第一次写博客,内容主要是记录一下一个有一年工作经验的java小白,回头复习,并深入学习java的一些以前理解模糊的面向对象开发中的核心思想和概念。只有理论上的东西。主要见解与《java面向对象编程》—孙卫琴老师的书籍。

主要内容(大纲)

1. 问题领域、对象、属性、状态、行为、方法、实现的理解
2. 类和类型
3. 消息、服务
4. 接口初级理解
5. 封装、透明(封装是怎么回事、如何更好的封装)
6. 抽象
7. 继承、扩展、覆盖
8. 组合
9. 多态,动态绑定

问题领域、对象、属性、状态、行为、方法、实现的理解

1. 问题领域
     问题领域是软件系统模拟的真实世界中的系统(说白了就是个软件系统)。
2. 对象
   对象是问题领域中事物的抽象,具有以下特点
	 1). 万物皆对象
	 2).每个对象是唯一的
	 3).对象具有属性(数据)和行为(方法)
     4).对象具有状态:状态指某个瞬间对象的各个属性的取值
     5).对象都属于某各类

同一个类的所有实例具有相同属性,但是他们的状态不一定相同。
同一个类的所有实例包括本身的所有实例,也包括其子类的所有实例。类的所有实例都具有相同的行为,意味着他们具有相同的功能。类本身的实例他们的行为的实现是相同的,而父类与子类,子类与子类之间的实例则可能采取不同的方式事项相同的功能。

类和类型

  1. 类是具有相同属性和相同行为的对象的抽象。
  2. 类及类的关系构成了对象模型的主要内容
  3. 对象模型中的类可以看做是开发人员自定义的数据类型(也就是说类是程序员自定义的类型)
    (补充知识:
          计算机受其存储但愿的限制,只能表示和操作一些基本的数据类型,比如:整型、字符、浮点数。
      但是jvm在运行时环境封装了把自定义的数据类型映射到计算机的内置数据类型的过程,使得开发人员
      不必受到计算机的内置数据类型限制,对任意一种问题领域,都可以方便的根据识别对象再进行分类的
      思路来简历对象模型。)
    

4.对象是类的实例,类是对象的模版。

消息和服务

  1. 例如电视机和遥控器,遥控器对象向电视机对象发送了一个“开机”消息,电视机对象接受到这个“消息执行 相应的操作此外遥控器还可以发送其他的消息例如:选择平道、音量调节等”
  2. .每个对象也具有功能,相对于其他对象而言,他的功能就是为其他对象提供的服务。例如电视机具有的功能:开机、 关机、选择平道等,遥控器为了获取电视机特定的服务,需要想电视机发送请求,提出请求的过程叫做发送消息发送消息意味着遥控器对象调用电视机对象的方法。
  3. 在系统内部,每个子系统(对象或对象的组合)也都是服务者,他们为其他子系统提供服务,子系统之间通过发送消息来相互服务。一个孤立的不对外提供任何服务的子系统是毫无意义的。

接口

问: 更具上一节的描述,每个子系统(对象或对象的组合)都是服务者,那么如何对外提供服务呢?
答:通过接口(在现实生活中接口无处不在,比如插座、键盘、鼠标按钮等)

在面向对象中接口是一个抽象的概念,是指系统对外提供的所有的服务。 这里的系统只的是(对象或对象的组合)因为对象是最小的系统,所以每一个对象就是一个服务者,每一个对象都有接口。
对象中所有对使用者公开的方法构成了接口,使用者不用关心对象到底是如何事项的,只需要直接调用接口就可以获得对应的服务。
接口在软件系统的设计阶段就确定下来了。
接口是解耦合的强有力的手段。例如计算机的键盘、鼠标等
同时接口也提高了系统的可扩展性。例如计算机的主板上的插槽,插声卡就有声音,插网卡就可以联网。
JAVA语言中接口有两种理解:
  1. 指概念性的接口,即系统对外提供的所有服务,在代码中表现为public修饰的方法;
  2. 指用interface关键字修饰的接口,也成为接口类。他明确地描述了系统对外提供的所有服务,可以更清晰的吧系统的接口与系统的实现分离。

封装、透明

封装:是指将对象的属性和实现细节影藏,只留出对外公开接口。有一下有点:
  1. 便于使用者正确和方便的理解和使用系统,防止使用者错误的修改系统的属性。
  2. 有助建立系统之间的松耦合关系,提高系统的独立性。当某一个系统的实现发生变化,只要接口不变,就不会影响到其他的系统。
  3. 提高可重用性。
  4. 对于大型系统来说,降低了大型系统的风险,即使整个系统不成功,但是他的子系统还是有价值的。
面向对象的编程语言主要是通过访问机制来进行封装的。
在java语言中有一下四种访问控制级别
  • public:对外公开
  • protected:只对同一个包中的类或子类公开
  • 默认:只对同一个包中的类公开
  • private:私有,不对外公开,只能在对象内部访问,访问级别最低
分装的两个大致原则:
  1. 尽可能吧多余的东西影藏起来,对外提供简洁的接口。
  2. 把所有的属性影藏起来。
    好处:
    1.更符合真实世界中外因通过内因起作用的客观规律
    2.能够灵活的控制属性的读和修改的访问级别
    3.防止使用者错误的修改属性
    4.有助于封装
与封装具有相同含义的一个概念次是透明
对象封装实现细节,也就意味着对象的实现细节对使用者是透明的。透明在这里应该理解诶“看不见

抽象

抽象:指从特定角度出发,从已经存在的一些事物中抽取我们所关注的特性,形成一个新的事物的思维过程。
在面向对象开发过程中,抽象体现在以下方面:

  1. 从问题领域中的事物到软件模型中对象的抽取
    这种抽象过程使得设计阶段创建的对象模型仅仅用来描述系统应该做什么,但不必关心如何去做,从而清晰地划清软件设计与软件编码的界限

  2. 从对象到类的抽象

  3. 从子类到父类的抽象
    有两种情况:

    1. 不同子类之间具有相同的功能,并且功能的实现方式也完全一样。
      这种情况把这个功能放到父类中实现,子类不必重复实现这个功能,这样可以提高代码的重用性和可维护性。
    2. 不同子类之间具有相同的功能,但是功能的实现方式不一样。
      这种情况由父类只声明这个方法,不提供实现,由子类来重写这个方法。这种抽象方式与面向对线的多态结合,有助于系统的解耦合性。
JAVA语言中抽象有两种理解:
  1. 当抽象作为动词时,就是指上述抽象思维过程
  2. 当抽象作为形容词时,可以用来修饰类和方法。当一个类被abstract修饰表名这个类不能被实例化只能被继承,当一个方法被abstract修饰时,这个方法不能有实现细节,只能由继承这个类的子类来实现。

继承、扩展、覆盖

父类和子类之间存在着继承和扩展关系,子类继承父类的属性和方法,同时子类还可以扩展出新的属性和方法,并且还可以覆盖父类中的方法的实现方式。(确切的说子类只能继承父类的部分属性和方法,父类中使用private修饰的属性和方法对子类是透明的。)

组合

组合是一种用多个简单子系统来组装出复杂系统的有效手段。
有以下优点:
  1. 在软件分析和设计阶段,简化复杂系统建立对象模型的过程。(自顶向下分解)
  2. 在软件编码阶段,简化创建复杂系统的过程,只需要分别创建独立的子系统然后将他们组合起来。
  3. 向使用者隐藏系统的复杂性。
  4. 提高程序代码的课重用性。一个独立的子系统可以组合到多个复杂系统中。

多态、动态绑定

多态:是指当系统A访问系统B的服务时,系统B可以通过多种实现方式来提供服务,而这一切对系统A是透明的。
动态绑定:所说的父类应用指向子类对象,当子类对象发生变化时,他所对应的父类应用也会调用相应的子类对象的实现方式。
	有必要提醒一点,抽象机制是程序员开发过程使用的机制,动态绑定机制是JVM运行时提供的机制。

最后干一碗鸡汤

开始需要勇气,坚持更需要勇气与毅力。很多事情,在没开始前,总会设想各种可能,未来的不确定,让自己担心失败、变得恐惧,各种负面的能量会在你的脑里、心中汇聚。而打破这个怪圈的,其实只有一种方法—“do it”。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值