`
crazyox
  • 浏览: 182979 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

理解OO

阅读更多

OO的特征:

封装:   封装是指隐藏对象的属性和实现细节.封装能为软件系统带来以下优点:

  1. 便于使用者正确的方便的理解和使用系统,防止使用者错误修改系统的属性。
  2. 有助于建立各个系统之间的松耦合关系,提高系统的独立性。当某一个系统的实现发生变化,只要它的接口不变,就不会影响到其他的系统。降低了构建大型系统的风险,即使整个系统不成功,个别的独立子系统有可能依然是有价值的。例如相机损坏了,它的干电池依然有用,可以安装到手电筒中。
  3. 提高软件的可重用性,每个系统都是一个相对独立的整体,可以在多种环境中得到重用。例如干电池就是一个可重用的独立系统,在相机、手电筒、电动剃须刀和玩具赛车中都能发挥作用。
  4. 降低了构建大型系统的风险,即使整个系统不成功,个别的独立子系统有可能依然是有价值的。例如相机损坏了,它的干电池依然有用,可以安装到手电筒中。


一个设计良好的系统会封装所有的实现细节,把它的接口与实现清晰的隔离开来,系统之间只通过接口进行通信。面向对象的编程语言主要是通过访问控制机制来进行封装,这种机制能控制对象的属性和方法的可访问性。

摘自《Java面向对象编程》一书,作者:孙卫琴 来源:www.javathinker.org
 

继承VS多态

继承体现的是对象间的共性,父类提供较通用的行为模板,各个子类调用父类的行为,避免冗余,大大提高了代码的可复用性和可维护性;子类可以在父类的基础上扩展自己的行为,提高了程序的可扩展性;

多态建立在继承的基础上,多态就是使得你能够用一种统一的方式来处理一组各具个性却同属一族的不同个体的机制。

多态体现的是各个对象在同一行为上的个性,具体表现为重写,将定义与实现相分离,体现了代码的可扩展性。

分享到:
评论

相关推荐

    设计模式课件大全

    PPT内容包括:内附代码,实例,方便理解。 继承、封装、多态、UML 设计模式02 设计模式03-创建型模式 设计模式04-创建型模式2 设计模式05-建造者、原型模式 ...此PPT实例便于理解,对于深入理解OO思想有很大帮助。

    10招让你成为杰出的Java程序员

    拥有扎实的基础和深刻理解 OO 原则  对于 Java 程序员,深刻理解 Object Oriented Programming(面向对象编程)这一概念是必须的。没有 OOPS 的坚实基础,领会不了像 Java 这些面向对象编程语言的美。光学习 OO ...

    用OO写键盘游戏

    适合想从结构化转为OO的人学习,键盘游戏例子简单有利于理解

    css_crash_course_presentation:CSS速成课程介绍

    CSS速成课程介绍 此类适合初学者接触CSS,或者是足够了解CSS但又讨厌它的所有知识的新手。 我们将使用预处理器介绍CSS的基础知识(包括特殊性),以及一些实用的最佳实践,以使您远离CSS困境。...OOCSS-将面向对象的方

    java-oo-practice

    #Java OO 练习描述 根据测试目录下各包下README.md中的需求编写代码,使得测试代码可以运行通过。 环境要求 Java 8 Intellij-IDEA 如何开始 在命令行中使用以下命令在用户本地任意目录下clone此题目库 git clone ...

    基于面向对象(OO)的数据库设计模式探讨

    内容面向对象的数据库设计对象关系模型实体对象关系模型应用总结下载参考资料简介: 面向对象(OO)和三范式(3NF)都是成熟的设计方法,本文基于面向对象设计思想和三范式数据库设计方法,提出一种实体对象分层...

    如何理解面向对象的概念

    浅显语言帮助理解什么是面向对象,面向对象的来源和哲学思辨

    OO系统分析员之路--用例分析系列(一)

    这个系列文章将以我对OO和系统分析的理解为主,从UML基础开始,阐述面向对象的需求分析方法,过程,并以RUP为例,阐述如何将OO过程与软件过程有机结合在一起,做一个真正OO应用。好了,今天是第一篇。想得很远,真...

    oo-basic-step-by-step-example-java:Java面向对象练习

    Java面向对象编程练习描述根据测试目录下各包下README.md中的...能够理解代码的执行过程中都发生了什么,如果不能够理解,使用调试器进行单步调试来辅助理解。每完成一个练习至少提交一次代码。反注释测试代码以执行。

    OO设计和伪状态模式实现的控制台五子棋游戏

    这是我大学时做的一个控制台五子棋游戏,工作后进一步理解了面向对象及一些设计模式,故以现有的知识重写了一下此游戏,希望能帮到一些对C#感兴趣的朋友。

    探讨PHP中OO之静态关键字以及类常量的详解

    即“->”),范围解析操作符(即双冒号“::”),不过觉得这个跟C#语言里的OO很多是一样的,很容易理解不过还是看看理清PHP里的OO思路还是应该的吧。——————————————————————————–声明...

    com本质论 潘爱民

    反过来,阅读这本书也可以加强在C++和OO思想方面的理解。此外,书中还涉及到许多COM高级特性,例如线程模型(或者套间模型)、名字对象、连接点等,因此,要想从这本书里获得最大受益,也需要有COM的知识作基础。

    COM本质论简体中文版

    反过来,阅读这本书也可以加强在C++和OO思想方面的理解。此外,书中还涉及到许多COM高级特性,例如线程模型(或者套间模型)、名字对象、连接点等,因此,要想从这本书里获得最大受益,也需要有COM的知识作基础。

    delegate委托

    从序言中,大家应该对委托和事件的重要性有点了解了吧,虽然说我们现在还是能模糊,但是从我的大白话...当然,什么是OO,OO就是现实世界的抽象,所有现实世界的事物,在OO里都能得到很好的诠释,不好意思,扯远了......

    客户端回调技术简单案例

    通过由易到难的例子帮助ASP.NET 2.0初学者理解客户端回调技术、泛型技术,已经其中所体现的OO思想。

    【JavaScript源代码】Javascript中异步等待的深入理解.docx

    Javascript中异步等待的深入理解  在本文中,我们将探讨async/await对于每个Javascript开发人员来说,异步编程的首选工具。如果您不熟悉javascript,请不要担心,本文将帮助您async/await从头开始理解。 async/...

    java程序员面试(这几天面试题)

    4.请说一下什么是OO 5.请说一下你为什么学习java.java的优点是什么 6.请说一下C/S与B/S的区别 J2EE 1.请说一下什么是J2EE 2.请说一下什么是框架,你掌握了哪些框架? 3.请说一下你对Ajax的理解 4.请说一下XML的作用 ...

    oo-basic-step-bystep

    适用人群没有js面向...能够理解代码的执行过程中都发生了什么,如果不能够理解,使用调试器进行单步调试来辅助理解。运行测试的办法npm installnode_modules/mocha/bin/mocha spec/practice_1/*学习材料(内容有重复)

Global site tag (gtag.js) - Google Analytics