`
哈达f
  • 浏览: 120363 次
  • 性别: Icon_minigender_1
  • 来自: 广西
社区版块
存档分类
最新评论

多态解析

    博客分类:
  • j2se
 
阅读更多

多态:
	好处:提高了程序的扩展性。
	思想:通过面向对象的思想,可以指挥对象做事情,如果对象多了,指挥每一个对象,就变得很麻烦。
		如何将麻烦的事情简单化呢?对这些对象进行分析并向上抽取,出现了共性类型后,就可以指挥共性类型做事情。
		那么,只要是这种共性类型的子类,就可以被指挥。

	在程序上的体现:
		父类或者接口引用指向了自己的子类对象。
		父类或者接口引用接收自己的子类对象。

	应用条件:
		1,类与类之间必须要有关系。
		2,通常会出现覆盖操作。
	
	局限性:通过多态可以提供扩展,可以在前期预先调用后期的内容,
		但是不可以调用后期的特有方法。只能调用后期覆盖的方法。

	动物 x = new 猫();
	x.抓老鼠();//错误,编译失败。因为动物中并未定义该方法。


	猫对象在向上转型,成为动物。如果要使用猫特有行为的时候,必须要向下转型。

	猫 y = (猫)x;

	在这两句代码中,自始自终都是子类对象在做着类型的转变。

	成员函数在多态中的特点:
	1,编译时期,参考的是引用型变量所属的类中是否有所调用的方法。
	2,运行时期,参考是的对象所属的类中是否有调用的方法。


	通过主板的示例来了解多态以及接口的应用。

	为了主板增强后期的扩展性以及可维护性,定义了一些规则。主板只要使用该规则即可,而其他的板卡只要符合该规则即可。
	interface PCI
	{
		void open();
		void close();
	}
	class MainBoard 
	{
		void usePCI(PCI p)
		{
			p.open();
			p.close();
		}
		void run()
		{}
	}

	main()
	{
		MainBoard mb = new MainBoard();
		mb.run();
		mb.usePCI(new NetCard());
	}

	两年后:想上网.

	class NetCard implements PCI
	{
		public void open(){}
		public void close(){}
	}
 
分享到:
评论

相关推荐

    c++多态解析1

    普通函数不具备这种特性,无法体现多态。同时,静态成员函数也不能声明为虚函数,因为静态成员函数与特定的对象实例无关,它属于类本身,不具备多态性。 多态的实现依赖于虚函数表(Virtual Table,简称vtable)。...

    Educoder题目:Java面向对象 - 封装、继承和多态答案解析.md

    Educoder题目:Java面向对象 - 封装、继承和多态答案解析

    fastJSON:最小,最快的多态JSON序列化程序

    最小,最快的多态JSON序列化器 请参阅此处的文章:[ ]( ) 另请参阅 安全警告 HP Enterprise Security Group引起了我的注意,使用$type扩展名可能会导致不安全,因此,应将其与常识和已知的json来源一起使用,而...

    多态题目解析

    ### 多态题目解析 #### 一、多态概述 多态是面向对象编程的核心特性之一,它允许我们在不知道具体对象类型的情况下处理对象。多态的实现方式多种多样,但通常分为编译时多态和运行时多态两种。本篇文章主要探讨...

    C#演示文稿教学资料,资源由网络分享整理,如有侵权请联系我

    类、继承、封装、多态解析,接口与抽象类运用,掌握OOP核心。 第七章:文件操作技术 文件与流管理,高级文件操作技巧,处理日志与配置文件必备。 第八章:数据库交互 ADO.NET框架下的数据库连接、SQL执行与数据绑定...

    Educoder题目:Java面向对象 - 封装、继承和多态的综合练习答案解析.md

    Educoder题目:Java面向对象 - 封装、继承和多态的综合练习答案解析

    java多态的讲解

    用代码实例和注释向你讲述什么是多态,实例更容易理解

    .NET笔试题

    #### 七、抽象类和多态解析 - **第7题**: 程序输出结果为: ``` A B B.Fun() ``` - 创建`B`类实例时首先调用基类构造函数输出`A`。 - 然后输出`B`。 - `a.Fun()`调用的是`B`类中的`Fun`方法,因为使用了`new`...

    javacc+jjtree使用教程

    `,启用多态解析器模式和访问者模式,这允许我们更灵活地处理生成的AST。 2. **JJTree**: - JJTree 是JavaCC的一个扩展,用于生成抽象语法树。它读取`.jj`文件并创建`.jjt`文件,该文件包含对AST节点的定义。 - ...

    多态 经典案例 一题多角度解析

    多态的经典案例,怎样代码重用,怎样去除冗余代码,这里一个案例4种不同层次代码解析。属性:员工编号:id 姓名:name 性别:gender 基本工资:baseSalary。。。。。。 程序员工资 = 基本工资 + 加班工时*50 项目经理...

    hibernate的多态查询

    **标题与描述解析** 标题“hibernate的多态查询”指的是在Hibernate框架中,如何进行涉及不同子类的对象查询,这是ORM(对象关系映射)中的一个重要特性,旨在提高代码的灵活性和可扩展性。多态查询允许我们编写一...

    Java继承与多态的全面解析及其综合应用

    内容概要:本文档详尽介绍了Java继承和多态的基本概念及综合应用。涵盖Java继承的基础,如关键字extends与super的使用、构造函数继承及方法重写等;还探讨了Java多态的特点,如方法重载与重写、向上转型与向下转型的...

    多态变形技术教学_2

    ### 多态变形技术教学_2 — 高级方法解析 #### 序言 本文作为多态变形技术教学系列的第二部分,旨在深入探讨高级多态变形技术的应用与实现细节。作者通过这篇教程,不仅回顾了之前的基础概念,还进一步介绍了如何在...

    实现多态:虚方法

    ### 实现多态:深入解析虚方法 在面向对象编程中,多态是三大核心特性之一,它使得程序设计更加灵活、可扩展。本文将详细探讨如何通过虚方法实现多态,以及这一特性背后的原理。 #### 多态的概念 多态...

    C++和Java多态的区别

    当类被加载时,这些信息会被解析并在内存中创建运行时常量池。 #### 四、C++与Java多态的比较 - **虚函数表 vs 方法表**:C++中的虚函数调用依赖于虚函数表,而Java则是通过方法表来实现多态。 - **运行时类型信息...

    c++ 的封装继承多态例子

    下面将深入解析这三个关键概念,并结合"cppgood"这个可能包含示例代码的压缩包,来阐述它们在实际编程中的应用。 **封装** 是面向对象编程的基础,它是指将数据和操作这些数据的方法捆绑在一起,作为一个独立的单元...

    C++中多态特性的详细解析与示例代码(包含详细的完整的程序和数据)

    内容概要:文章详细讲解了面向对象编程的关键概念——多态,并提供了详细的示例和实现代码。主要内容包括多态的定义及其在C++中通过虚函数的应用;多态的基础、必要条件和常见应用场景;介绍了如何实现多态以及与...

    基于C语言实现多态属性(源码+解析)

    代码展示了如何在C语言中模拟实现多态,通过函数指针和结构体来实现基类和派生类的关系,以及通过基类指针调用不同对象的成员函数,实现了多态的效果。虽然在C语言中实现多态不如面向对象语言那样直接,但仍然可以...

    从虚拟机角度看Java多态->(重写override)的实现原理

    Java多态是面向对象编程中的一个核心特性,它允许我们以一种统一的方式处理不同类型的对象。在Java中,多态性主要通过继承、接口和方法重写(Override)来实现。这里我们将深入探讨从虚拟机(JVM)的角度来看,Java...

    C++多态的实现及原理详细解析

    以下是关于C++多态性实现和原理的详细解析: 1. **虚函数**:在C++中,通过在基类的成员函数声明前添加`virtual`关键字,可以将其声明为虚函数。虚函数使得在运行时能够根据对象的实际类型(而非指针或引类型的静态...

Global site tag (gtag.js) - Google Analytics