`
zengjuly
  • 浏览: 14440 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

多态 polymorphism

 
阅读更多

多态 polymorphism
多态提供了借口与实现分离的另一个重要性,能将是什么what从how怎么做之中抽离。改善程序的组织架构和可读性,更能开发出可扩充性的程序。
封装encapsulation通过将特征characteristics与行为behavior结合在一起而产生新的类别
实现隐藏implementation hidden则通过将细节details设为private而分离出接口interface和实现implementation。

Method call binding函数调用绑定方式
Early binding 先期绑定:绑定动作发生于程序执行前
late binding 后期绑定:绑定动作将在执行期才根据对象类别而进行。runtime binding,dynamic binding
Java的所有函数,除了final的以外,都使用后期绑定。

覆写overriding VS. 重载overloaing
overriding 接口的属性列表不变
overloading 函数的属性列表不同

Abstract class 与 Abstract method

抽象类提供了相同的接口

抽象方法 语法:
abstract void function();
含有抽象方法的类,称为抽象类。如果一个类含有一个或多个abstract method,需要使用abstract作为class的修饰
不含抽象方法的类也可以使用abstract修饰,该类则不能产生实体。

abstract class 和 abstract method很实用,他们可以明确类的抽象性质,并告诉使用者和编译器它所设想的使用方式。

构建函数的调用顺序:
1 呼叫base class构建函数(在派生类构建函数,初始语句中可以访问父类)
2 根据各成员的定义顺序,呼叫其初始设定式(派生类构建函数中可以访问)
3 呼叫派生类的构建函数本体。

finalize()
使用组合生成的类,不需要关心她的成员对象的终止问题。每个成员都是独立物件。
派生类如果有特殊的清理动作在垃圾回收时进行,则必须覆写finalize(),且在其中要呼叫父类的finalize()。否则父类的终止动作不会发生。

对象的终止顺序和生成顺序相同,但技术上讲,对象的终止顺序是没有规范的。但通过父类,可以控制终止顺序。
先执行派生类的终止式,然后再执行父类的终止式。因为派生类的终止动作可能呼叫父类的函数


polymorphic method在构建函数中的行为
在任何构建函数中,整个对象可能仅有部分被形成,只能确认base class已经形成,但无法知道哪些类继承自此类,一个动态链接的函数调用可能会在继承体系中向外发散,它会呼叫到派生类的函数,可能会访问一些未被初始化的变量。

在构建函数中,尽可能简单的让对象进入正确状态,如果可以的话不要调用函数,唯一可以调用的是父类的final函数(private也可以,它们天生是final的)。它们不会被覆写。

请以继承表达行为上的差异,以成员变量表达状态上的变化。

分享到:
评论

相关推荐

    多态Polymorphism3---马克-to-win java视频

    多态 Polymorphism 马克-to-win java视频的详细介绍

    多态Polymorphism5---马克-to-win java视频

    多态 Polymorphism 马克-to-win java视频的详细的介绍

    多态Polymorphism4---马克-to-win java视频

    多态Polymorphism 马克-to-win java视频的详细描述介绍

    多态Polymorphism1---马克-to-win java视频

    多态 Polymorphism 马克-to-win java视频的详细描述介绍

    虚函数是C++中用于实现多态(polymorphism)的机制

    虚函数是C++中用于实现多态(polymorphism)的机制。核心理念就是通过基类访问派生类定义的函数。

    C++标准的STL介绍

    与OOPobject-oriented programming中的多态polymorphism一样,泛型也是一种软件的复用技术; 从实现层次看,整个STL是以一种类型参数化的方式实现的,这种方式基于一个在早先C++标准中没有出现的语言特性--模板...

    Java零基础-多态.md

    内容概要: 本文介绍了Java中多态(Polymorphism)的概念和用法。读者将学习什么是多态,为什么需要多态,以及如何在程序中实现多态。此外,还会讨论多态时的一些注意事项和规则。 能学到什么: 理解多态的定义、...

    类的多态练习_C++_类的多态练习_

    C++类的多态练习(Class polymorphism exercise)

    病毒和网络攻击中的多态、变形技术原理分析及对策

    –什么是多态(Polymorphism) –什么是变形(Metamorphism) • 恶作剧者的游戏?—多态和变形技术原理分析 –病毒多态和变形技术原理分析 • 多态引擎 • 变形引擎 –多态和变形技术在网络攻击中的应用

    C#中多态现象和多态的实现方法

    Polymorphism(多态性)来源于希腊单词,指“多种形态”。多态性的一个重要特征是方法的调用是在运行时确定而不是编译时。在.NET中用于实现多态性的关键词有virtual、override、abstract、interface。 一、virtual...

    多态思维导图.xmind

    多态思维导图.xmind

    polymorphism in c++

    原书的6,7章,关注怎样利用多态构建应用程序的框架,对于想进阶的朋友比较大的帮助 

    PHP面向对象编程之深入理解方法重载与方法覆盖(多态)

    多态(Polymorphism)按字面的意思就是“多种状态”。在面向对象语言中,接口的多种不同的实现方式即为多态。引用Charlie Calverts对多态的描述——多态性是允许你将父对象设置成为和一个或更多的他的子对象相等的...

    c#基础学习之多态

    多态(Polymorphism)按字面的意思就是“多种状态”。在面向对象语言中,接口的多种不同的实现方式即为多态

    java课程资源第七章

    多态(polymorphism) “多态”理解 再论向上转型 多态内部机制 正确使用,私有、静态方法及域与多态关系 构造器-多态 协变的返回类型(Covariant return types) 用继承进行设计(纯继承与扩展、向下转型)

    Java技术及其应用 02 面向对象结构(共106页).ppt

    ◇多态 (Polymorphism) 指同一个继承体系中不同类的对象收到相同的消息时产生不同的行为方式。 学习面向对象编程首先就要学习怎样通过抽象得到类,即怎样将某些数据以及和数据有关的操作封装在一起。

    深入php多态的实现详解

    多态性是指相同的操作或函数、过程可作用于多种类型的对象上并获得...1.什么是多态 多 态(Polymorphism)按字面上意思理解就是“多种形状”。可以理解为多种表现形式,也即“一个对外接口,多个内部实现方法”。在

    C++ 虚函数与多态 教学PPT

    多态性(Polymorphism)是面向对象程序设计的一个非常重要的特性,是指不同的对象对于同样的消息会产生不同的行为,而消息在C++语言中指的就是函数的调用,不同的函数可以具有多种不同的功能,而多态就是允许用一个...

    C++中的多态、重载、覆盖与隐藏

     虚函数是C++中用于实现多态(polymorphism)的机制。核心理念是通过基类访问派生类定义的函数。假设我们有下面的类层次: class A { public: virtual void foo() { cout << "A::foo() is called" <...

    10_Polymorphism:第10章

    项目名称:10_Polymorphism 取消选择“创建主类”复选框 结束 在“项目”窗口中右键单击项目->选择“ Git”->选择“远程”->选择“拉..”->下一步 选择“指定Git存储库位置” 远程名称:起源 资料库URL: : 用户...

Global site tag (gtag.js) - Google Analytics