如何体现封装、继承、多态 编程人员看看
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
如何体现封装、继承、 编程人员看看! 如何体现封装、继承、多态 编程人员看看!! ! 什么事封装? 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,interf ace ect)) 2. 重载(同一个类中) 如果是面向对象程序设计的话,面向对象程序设 计中的另外一个重要概念是多态性。在运行时,通过 指向 基类的指针,来调用实现派生类中的方法。可以把一 组对象放到一个数组中,然后调用它们的方法,在这 种场 合下,多态性作用就体现出来了,这些对象不必是相 同类型的对象。当然它们都继承自某个类,你可以把 这些 派生类都放到一个数组中。如果这些对象都有同名方
法,就可以调用每个对象的同名方法。同一操作作用 于不 同的对象, 可以有不同的解释, 产生不同的执行结果, 这就是多态性。多态性通过派生类重载基类中的虚函 数 型方法来实现。 在面向对象系统中,多态性是一个非常重要的概 念,它允许客户对一个对象进行操作,由于对象来完 成一 系列的动作,具体实现哪个动作、如何实现由系统负 责解释。 “多态性”一词最早用于生物学,指同一种族的 生物体具有相同的特性。在 C#中,多态性的定义是: 同一 操作作用于不同的类的实例,不同的类将进行不同的 解释, 最后产生不同的执行结果。 C#支持两种类型的 多 态性: >编译时的多态性 编译时多态是通过重载来实现的。对于非虚的成 员来说,系统在编译时,根据传递的参数,返回的类 型
等信息决定实现何种操作。 >运行时的多态性 运行时多态性就是指直到系统运行时,根据实际 情况决定何种操作。 C#中, 运行时的多态性通过虚成 员 实现。 编译时的多态性为我们提供了运行速度快的特 点,而运行时的多态性则带来了高度灵活和抽象的特 点。 面向对象的编程方法具有四个基本特征: 1. 抽象: 抽象就是忽略一个主题中与当前目标无关的那些 方面,以便更充分地注意与当前目标有关的方面。抽 象 并不是打算了解全部问题,而是选择其中的一部分, 忽略暂时不用部分细节。比如,我们要设计一个学生 成绩 管理系统,考察学生这个对象时,我们只关心他的班 级、学号、成绩等,而不用去关心他的身高、体重这 些信息。 抽象包括两个方面,一是过程抽象,二是数抽象。过 程抽象是指任何一个明确定义功能的操作都可被使用
者看做 单个实体看待,尽管这个操作实际上可能由一系列更 低级的操作来完成,数据抽象定义了数据类型和施加 于该类 型对象的操作,并限定了对象的值只能通过使用这些 操作修改和观察。 2. 继承: 继承是一种联结类的层次模型,并且允许和鼓励 类的重用,他提供了一种明确表述共性的方法。对象 的一个 新类可以从现有的类中派生,这个过程为类的继承。 新类继承了原始类的特性,新类称为原始类的派生类 (子类), 而原始类称为新类的基类(父类)。派生类可以从他 的基类那里继承方法和实例变量,并且类可以修改或 增加新 的方法使之更适合特殊的需要。这也体现了大自然的 一般与特殊的关系。继承性很好的解决了软件的可重 用性问题。 比如说,所有的 Windows 应用程序都有一个窗口, 他们可以看作都是从一个窗口派生出来的。但是有的 应用程序
用于文字处理,有的应用程序用于绘图,这是由于派 生出了不同的子类,各个子类添加了不同的特性。 3. 封装: 封装是面向对象的特征之一,是对象和类概念的 主要特性,封装是吧过程和数据包围起来,对数据的 访问只能 通过已定义的界面。 面向对象计算始于这个基本概念, 即现实世界可以被描绘成一系列完全自治,封装的对 象,这 些对象通过一个受保护的接口访问其他对象。一旦定 义了一个对象的特性,则有必要决定这些特性的可观 性,即哪 些特性对外部世界时可见的,哪些特性用于表示内部 状态。在这个阶段定义对象的接口。通常,应禁止直 接访问一 个对象的实际表示,而应通过操作接口访问对象,这 称为信息隐藏。事实上,信息隐藏是用户封装性的认 识,封装 则为信息隐藏提供支持。封装保证了模块具有较好的 独立性,使得程序维护修改较为容易。对应用程序的 修改仅限
于类的内部,因而可以将应用程序修改带来的影响减 少到最低限度。 4. 多态性: 多态性是指允许不同类的对象对同一消息作出响 应。比如同样的加法,把两个时间加在一起和把两个 整数加在 一起肯定完全不同。又比如,同样的选择编辑-粘贴操 作, 在文字处理程序和绘图处理程序中有不同的效果。 多态性 包括参数化多态性和包含多态性。多态性语言具有灵 活、抽象、行为共享,代码共享的优势,很好的解决 了应用程 序同名问题。 使用了对象就叫基于对象,基于对象的基础增加了继 承从而变成了面向对象。 基于对象的最大特点就是封装,至于 private,pr otected,public,并不是基于对象语言的必须要求。 同 时应该注意 的是,封装对于应用本身并没有提供太大的帮助;换 句话说封装