`
zhb8015
  • 浏览: 379863 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
Group-logo
Spring Roo杂谈
浏览量:0
社区版块
存档分类
最新评论

如何体现封装、继承、多态 编程人员看看(转)

    博客分类:
  • J2SE
阅读更多

真正的理解不光在于实践出来,也要能说出来..:(

 

原文:http://www.cnblogs.com/cestcnsoft/archive/2011/03/24/1994096.html

多态实例:http://my-imagination.iteye.com/blog/851752

 

什么事封装?

  1. 保护数据成员,不让类以外的程序直接访问或修改,只能通过提供的公共的接口访问==>数据封装。

  2. 方法的细节对用户是隐藏的,只要接口不变,内容的修改不会影响到外部的调用者==>方法封装。

      3. 当对象含有完整的属性和与之对应的方法时称为封装。

  4. 从对象外面不能直接访问对象的属性,只能通过和该属性对应的方法访问。

  5. 对象的方法可以接收对象外面的消息。

比如:

Class A

{

  private int prop;

      puplic int getProp()
  {
    return prop;
  }

  public void setProp(int prop)
  {
    this.prop = prop;
  }

}

  属性prop是private的,外界不能直接访问,但是外界可以通过调用getProp()和setProp()的方法,
给对象发消息,从而完成某种功能。

什么事多态?

  多态性的概念经常被说成事“一个接口,多种方法”。这意味着可以为一组相关的动作作设计一个通用
的接口。多态允许同一个接口被必于同一个类的多个动作使用,这样就降低了程序的复杂性。再拿狗作比喻,
一条狗的嗅觉是多态的。如果狗闻到猫的气味,它会在吠叫并且追着它跑。如果狗闻到食物的气味,它将分
泌唾液并向盛着食物的碗跑去。两种状况下同一种嗅觉器官在工作,差别在于问到了什么气味,也就是有两
种不同类型的数据作用于狗的鼻子!在java中,同一个类中的2个或2个以上的方法可以有同一个名字,只要
参数声明不同即可。在这种情况下,该方法就被称为重载(Overload),这个过程称为方法重载(Method
overloading)。方法重载是java实现多态的一种方式。

有两种方式可以实现多态:*
1. 继承(子类继承父类(包括abstract class,interface ect))
2. 重载(同一个类中)

  如果是面向对象程序设计的话,面向对象程序设计中的另外一个重要概念是多态性。在运行时,通过指向
基类的指针,来调用实现派生类中的方法。可以把一组对象放到一个数组中,然后调用它们的方法,在这种场
合下,多态性作用就体现出来了,这些对象不必是相同类型的对象。当然它们都继承自某个类,你可以把这些
派生类都放到一个数组中。如果这些对象都有同名方法,就可以调用每个对象的同名方法。同一操作作用于不
同的对象,可以有不同的解释,产生不同的执行结果,这就是多态性。多态性通过派生类重载基类中的虚函数
型方法来实现。

  在面向对象系统中,多态性是一个非常重要的概念,它允许客户对一个对象进行操作,由于对象来完成一
系列的动作,具体实现哪个动作、如何实现由系统负责解释。

  “多态性”一词最早用于生物学,指同一种族的生物体具有相同的特性。在C#中,多态性的定义是:同一
操作作用于不同的类的实例,不同的类将进行不同的解释,最后产生不同的执行结果。C#支持两种类型的多
态性:

>编译时的多态性
  编译时多态是通过重载来实现的。对于非虚的成员来说,系统在编译时,根据传递的参数,返回的类型
等信息决定实现何种操作。
>运行时的多态性
  运行时多态性就是指直到系统运行时,根据实际情况决定何种操作。C#中,运行时的多态性通过虚成员
实现。

  编译时的多态性为我们提供了运行速度快的特点,而运行时的多态性则带来了高度灵活和抽象的特点。

面向对象的编程方法具有四个基本特征:
1. 抽象:
  抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象
并不是打算了解全部问题,而是选择其中的一部分,忽略暂时不用部分细节。比如,我们要设计一个学生成绩
管理系统,考察学生这个对象时,我们只关心他的班级、学号、成绩等,而不用去关心他的身高、体重这些信息。
抽象包括两个方面,一是过程抽象,二是数抽象。过程抽象是指任何一个明确定义功能的操作都可被使用者看做
单个实体看待,尽管这个操作实际上可能由一系列更低级的操作来完成,数据抽象定义了数据类型和施加于该类
型对象的操作,并限定了对象的值只能通过使用这些操作修改和观察。

2. 继承:
  继承是一种联结类的层次模型,并且允许和鼓励类的重用,他提供了一种明确表述共性的方法。对象的一个
新类可以从现有的类中派生,这个过程为类的继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),
而原始类称为新类的基类(父类)。派生类可以从他的基类那里继承方法和实例变量,并且类可以修改或增加新
的方法使之更适合特殊的需要。这也体现了大自然的一般与特殊的关系。继承性很好的解决了软件的可重用性问题。
比如说,所有的Windows应用程序都有一个窗口,他们可以看作都是从一个窗口派生出来的。但是有的应用程序
用于文字处理,有的应用程序用于绘图,这是由于派生出了不同的子类,各个子类添加了不同的特性。

3. 封装:
  封装是面向对象的特征之一,是对象和类概念的主要特性,封装是吧过程和数据包围起来,对数据的访问只能
通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治,封装的对象,这
些对象通过一个受保护的接口访问其他对象。一旦定义了一个对象的特性,则有必要决定这些特性的可观性,即哪
些特性对外部世界时可见的,哪些特性用于表示内部状态。在这个阶段定义对象的接口。通常,应禁止直接访问一
个对象的实际表示,而应通过操作接口访问对象,这称为信息隐藏。事实上,信息隐藏是用户封装性的认识,封装
则为信息隐藏提供支持。封装保证了模块具有较好的独立性,使得程序维护修改较为容易。对应用程序的修改仅限
于类的内部,因而可以将应用程序修改带来的影响减少到最低限度。

4. 多态性:
  多态性是指允许不同类的对象对同一消息作出响应。比如同样的加法,把两个时间加在一起和把两个整数加在
一起肯定完全不同。又比如,同样的选择编辑-粘贴操作,在文字处理程序和绘图处理程序中有不同的效果。多态性
包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享,代码共享的优势,很好的解决了应用程
序同名问题。

使用了对象就叫基于对象,基于对象的基础增加了继承从而变成了面向对象。
  基于对象的最大特点就是封装,至于private,protected,public,并不是基于对象语言的必须要求。同时应该注意
的是,封装对于应用本身并没有提供太大的帮助;换句话说封装

分享到:
评论

相关推荐

    如何体现封装、继承、多态编程人员看看[定义].pdf

    如何体现封装、继承、多态编程人员看看[定义].pdf

    C++核心编程,学习总结方便回看

    学习过程中随手写的,核心编程,类和对象,封装继承多态

    C++语言及网络编程书籍整理

     c语言篇:(虽有人说学C++不用先学c,但我颇不以为然,不知数据为何,又何来的封装继承多态)  1:c语言入门大学教程c语言谭浩强版足以。  2:windows c语言API编程基础,推荐《windows程序设计(第5版)》 Charles ...

    实验:JAVA类的使用

    通过本次实验,可以深入了解类的创建、继承、封装和多态等特性,并分析了类在编程中的应用场景。 类是面向对象编程的基本构成,它能够封装数据和方法。通过实验,你可以更深入地了解类的定义、属性和方法,以及如何...

    写给大家看的面向对象编程书(第三版)

    1.6 封装和数据隐藏 1.7 继承 1.8 多态 1.9 组合 1.10 小结 1.11 本章使用的示例代码 第2章 如何以对象方式思考 2.1 了解接口与实现之间的区别 2.2 设计接口时使用抽象思维 2.3 尽可能为用户提供最小接口 ...

    c#基础教程(ppt)+习题集(doc)

    看目录就知道是什么了 第一讲-.net概述及开发环境简介 第二讲-C#程序基础 ...第五讲-面向对象编程(二)继承封装和多态 第六讲-面向对象编程(三)属性和索引 第七讲-面向对象编程(五)异常处理 ...

    Agile Java (EN)

    更进一步理解了抽象、封装、继承、多态这些原理以及初步了解了极限编程(xp)。 敏捷(agile)编程:表示轻量级过程的术语;敏捷过程的核心理念是:需求贵随着项目的进展而变化。 本文来自CSDN博客,转载请标明...

    JAVASE-面试解惑.pdf

    面向对象是当今主流的程序设计思想,面向对象是对现实世界中事物的一种理 解和抽象,在现实生活中,任何物体都可以归... (3)面向对象具有抽象、封装、继承、多态 等特性。 面向对象的编程语言主要有:C++、Java、C#等

    c#中 使用 winform 写的一个 猫狗大战的小游戏

    在写的过程中,能更好的理解与运用对象的封装、继承与多态,本案例采用了一个简单的界面与图片,图片都是方便且可下载的 适合人群:编程小白,对c# winform感兴趣的 能学到什么:对对象三大特征的学习与实际中的运用...

    程序员面试刷题的书哪个好-effective-cpp-note:EffectiveC++、MoreEffectiveC++和Effective

    object-C的class,封装继承多态,virtual动态绑定等, template C++的泛型 STL:容器,迭代器,算法,函数对象等 因此当这四个子语言相互切换的时候,可以更多地考虑高效编程,例如pass-by-value和pass-by-reference...

    浅谈javascript 面向对象编程

    感叹是为了缓解严肃的气氛并引出今天要讲的话题,”javascript面向对象编程”,接下来,我们围绕面向对象的几大关键字:封装,继承,多态,展开。 封装:javascript中创建对象的模式中,个人认为通过闭包才算的上是...

    老鱼 浅谈javascript面向对象编程

    感叹是为了缓解严肃的气氛并引出今天要讲的话题,”javascript面向对象编程”,接下来,我们围绕面向对象的几大关键字:封装,继承,多态,展开。 封装:javascript中创建对象的模式中,个人认为通过闭包才算的上是...

    传智播客_C++基础课程讲义_v1.0.7

    5.6 C面向接口编程和C多态 6 5.6.1函数类型语法基础 6 5.6.2函数指针做函数参数 6 5.6.3函数指针正向调用 6 5.6.4函数指针反向调用 6 5.6.5.C动态库升级成框架案例 6 5.6.6附录:诸葛亮的锦囊妙计 6

    谈一谈基于python的面向对象编程基础

    把相同行为的对象归纳为类(class),通过类的封装(encapsulation)隐藏内部细节,通过继承(inheritance)实现类的特化(specialization)和泛化(generalization),通过多态(polymorphism)实现基于对象类型的...

    程序员面试求职必备模板

    这里还有做好心理准备就是 一旦我们写了熟悉某某语言,这门语言就一定是面试中重点考察的一个点,例如写了熟悉C++, 那么继承、多态、封装、虚函数、C++11的一些特性、STL 就一定会被问道。 所以简历上写着熟悉哪...

    C++编程思想.pdf

    不用多说了,非常经典的C++教材。适合初学者,更适合具备一定基础的进阶者,要边看边练,才是正道。

    PHP_面向对象教程(强力推荐)

    为编程人员敞开了一扇大门,使其编程的代码更简洁、更易于维护,并且具有更强的可重 用性。有人说PHP不是一个真正的面向对象的语言,这是事实。PHP 是一个混合型语言,你可以使 用OOP,也可以使用传统的过程化编程...

    写给大家看的面向对象编程书(第3版).[美]Matt Weisfeld(带详细书签).pdf

    7.4.1 继承如何削弱封装 109 7.4.2 多态的一个详细例子 111 7.4.3 对象职责 111 7.5 小结 115 7.6 参考书目 115 7.7 本章使用的示例代码 115 7.7.1 TestShape示例:C#.NET 115 7.7.2 TestShape示例:VB.NET ...

    JavaScript 对象、函数和继承

    1、 Javascript中的对象 JavaScript可以说是一个基于对象的编程语言,为什么说是基于对象而不是面向对象,因为JavaScript自身只实现了封装,而没有实现继承和多态。既然他是基于对象的,那么我们就来说说js中的对象...

    AIC的Java课程1-6章

     培养和建立面向对象编程的思维方式,可以运用封装、继承和多态三大基本特性编写面向对象的程序。  理解和应用Java异常,常用类,IO,集合和多线程等开发技术。  课时安排  总学时:52学时 ...

Global site tag (gtag.js) - Google Analytics