`
zengjuly
  • 浏览: 15035 次
  • 性别: 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++标准的STL介绍

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

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

    在C++中,虚函数是一种特殊类型的成员函数,它的主要目的是实现多态性(polymorphism)。多态性允许子类重写父类的方法,并且能够在运行时根据对象的实际类型调用相应的方法。这一特性对于构建灵活且可扩展的软件系统...

    java多态实验

    - 动态多态(Dynamic Polymorphism):主要通过方法重写(Overriding)实现,子类继承父类并覆盖其方法,运行时根据实际对象类型调用相应的方法。 3. 实现多态的条件: - 继承:至少有一个父类和一个或多个子类。...

    多态代码实例

    在编程领域,多态(Polymorphism)是一个关键概念,尤其在面向对象编程中发挥着重要作用。多态允许我们使用一个通用的接口来处理不同类型的对象,提供了代码的灵活性和可扩展性。虚函数(Virtual Function)是实现...

    java面试常见问题(超详细).pdf

    5. **多态Polymorphism**: 多态是指一个接口或类可以表现出多种形态。通过接口或继承,子类可以实现父类的方法,使得在父类引用中调用方法时,实际执行的是子类的方法。 6. **接口Interface**: 接口是一种定义...

    labview创建多态VI

    在LabVIEW中,多态性(Polymorphism)是一个关键特性,它允许开发者创建一个通用的VI(Virtual Instrument),这个VI可以处理不同类型的数据或执行不同的操作,具体行为由输入数据的类型来决定。这极大地提高了代码...

    一个HW 多态题目 一个HW 多态题目

    在编程领域,多态性(Polymorphism)是面向对象编程中的一个重要概念,它允许不同类型的对象对同一消息做出不同的响应。多态性是通过继承、接口和虚函数等机制实现的,它使得代码更加灵活,可重用性更高。在本题目中...

    多态的练习案例

    在编程领域,多态(Polymorphism)是面向对象编程中的一个重要概念,它允许我们用一个接口处理多种不同的数据类型。多态性使得程序更加灵活,可扩展性更强,能够提高代码的重用率。本练习案例将深入探讨多态的常见...

    多态PPT文件!!!!

    在IT行业中,多态(Polymorphism)是一个核心概念,主要在面向对象编程(Object-Oriented Programming, OOP)中出现。它允许我们使用一个接口来表示多种不同的类型,从而提高了代码的灵活性、可扩展性和可重用性。在...

    java多态小结

    多态(Polymorphism)是面向对象编程的一个核心特性,指的是一个接口可以被多个类所实现或一个类可以被多个类所继承,进而表现出不同的行为。在Java中,多态主要体现在两个方面:**编译时类型与运行时类型的不同**...

    基于C++的多态模式编写类的代码多态.docx

    在C++中,多态(Polymorphism)是面向对象编程的一个核心概念,它允许我们使用一个接口来表示多种不同的类型。多态性使得代码更加灵活,可扩展性更强,可以减少代码重复,并提高代码的复用性。在这个文档中,通过两...

    Animal(多态练习)

    多态(Polymorphism)是面向对象三大特性(封装、继承、多态)之一,它允许我们使用一个接口来表示多种类型,使得代码更加灵活且易于扩展。在C++中,多态主要通过虚函数(virtual functions)和纯虚函数(pure ...

    Java 多态应用,掌握多态

    在Java编程语言中,多态性(Polymorphism)是面向对象编程的三大特性之一,另外两个是封装和继承。多态性允许我们使用一个通用的接口来处理不同类型的对象,使得代码更具灵活性和可扩展性。理解并熟练运用多态,能够...

    C++中的虚函数与多态

    在C++编程语言中,虚函数(Virtual Functions)和多态(Polymorphism)是面向对象编程的重要特性,它们使得程序具有高度的灵活性和可扩展性。本文将深入探讨这两个概念,结合示例代码进行详细解释。 首先,我们来...

    Java 面向对象三大特性之多态

    多态(Polymorphism)在希腊语中意为“多种形态”,在编程中,它指的是一个接口可以有多种不同的实现或者一个类可以有多种不同的行为。多态分为编译时多态和运行时多态。编译时多态主要通过方法重载实现,而运行时...

    C++ 多态 实例

    在C++编程语言中,多态(Polymorphism)是一种核心特性,它允许不同类型的对象对同一消息作出不同的响应。这个实例将帮助初学者深入理解多态的概念,并通过实际代码来展示其工作原理。 多态分为编译时多态(静态...

Global site tag (gtag.js) - Google Analytics