精华内容
下载资源
问答
  • 多态解决了什么问题
    2021-12-31 00:24:06
    • 封装
      又称信息隐藏或者数据访问保护。外部只能通过类提供的方法来访问数据。
      需要编程语言提供权限访问控制语法来支持,例如Java中的private、protected、public关键字。
      意义:一方面保护数据不被随意修改,提高代码的可维护性;另一方面是仅暴露有限的必要接口,提高类的易用性。

    • 抽象
      讲如何隐藏方法的具体实现。
      可以通过接口类或者抽象类来实现。
      并不需要特殊的语法机制来支持。
      意义:一方面是提高代码的可扩展性、维护性,修改实现不需要改变定义,减少代码的改动范围;另一方面,它也是处理复杂系统的有效手段,能有效地过滤掉不必要关注的信息。

    • 继承
      是一个非常有争议的特性,过度使用继承,继承层次过深过复杂,就会导致代码可读性、可维护性变差。
      为了实现继承这个特性,编程语言需要提供特殊的语法机制来支持。
      意义:用来解决代码复用的问题。

    • 多态
      指子类可以替换父类,在实际的代码运行过程中,调用子类的方法实现。
      多态这种特性也需要编程语言提供特殊的语法机制来实现。

      • 第一个语法机制是编程语言要支持父类对象可以引用子类对象.
      • 第二个语法机制是编程语言要支持继承
      • 第三个语法机制是编程语言要支持子类可以重写(override)父类中的方法

    多态特性能提高代码的可扩展性和复用性。

    更多相关内容
  • 在 JAVA多态用在解决什么问题

    千次阅读 2015-07-29 09:49:11
    在 JAVA多态用在解决什么问题? 2011-11-24 07:39wangjianr 分类:JAVA相关 | 浏览 3083 次 分享到: 2011-11-24 07:51 提问者采纳 其实多态是一种面向对象的设计思想...

    在 JAVA多态用在解决什么问题?

    2011-11-24 07:39 wangjianr    分类:JAVA相关  |  浏览 3083 次
    2011-11-24 07:51 提问者采纳
    其实多态是一种面向对象的设计思想,也就是只给接口,让你去实现(可以替换实现),就是设计和实现的分离,这个做法有利于软件的重用。
    
    举个例子,你创建了一个动物的抽象类或接口,里面有一些接口方法,你造了一个动物园,然后有各种动物的奔跑、叫唤、吃食等动作作为方法,但你并没有实现它,在没有任何动物之前你只用知道如何把这些动物都圈到笼子里,就有动物园了。
    
    然后,从别处给你运来了老虎、狮子、猴子、狗、猫这些动物,都是实现了你的奔跑、叫唤、吃食这些方法了,这些就是具体动物的实现部分,你把他们挂到你动物园上就行了。这就是多态。
    
    以下是一些理论的描述,请参考:
    
    多态给我们带来的好处,可以归纳为如下5点:
    1.         可替换性(substitutability)。多态对已存在代码具有可替换性。例如,多态对圆Circle类工作,对其他任何圆形几何体,如圆环,也同样工作。
    2.         可扩充性(extensibility)。多态对代码具有可扩充性。增加新的子类不影响已存在类的多态性、继承性,以及其他特性的运行和操作。实际上新加子类更容易获得多态功能。例如,在实现了圆锥、半圆锥以及半球体的多态基础上,很容易增添球体类的多态性。
    3.         接口性(interface-ability)。多态是超类通过方法签名,向子类提供了一个共同接口,由子类来完善或者覆盖它而实现的。例如,假设超类Shape规定了
        两个实现多态的接口方法,computeArea()以及computeVolume()。子类,如CircleSphere为了实现多态,可以完善或者覆盖这两个接口方法。
    4.         灵活性(flexibility)。它在应用中体现了灵活多样的操作,提高了使用效率。
    5.         简化性(simplicity)。多态简化对应用软件的代码编写和修改过程,尤其在处理大量对象的运算和操作时,这个特点尤为突出和重要。
           值得注意的是,多态并不能够解决提高执行速度的问题,因为它基于动态装载和地址引用,或称动态绑定。但在Java中,除了final类和一定条件下的final方法外,所有方法都由JVM在运行期间进行动态绑定。
    展开全文
  • 什么多态? 概念:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果,这就是多态...而多态除了代码的复用性外,还可以解决项目中紧偶合的问题,提高程序的可扩展性.。耦合度讲的是模块模块之间,...

    什么是多态?

    概念:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果,这就是多态性。简单的说:就是用基类的引用指向子类的对象。

     

    为什么要用多态呢?

    原因:我们知道,封装可以隐藏实现细节,使得代码模块化;继承可以扩展已存在的代码模块(类);它们的目的都是为了——代码重用。而多态除了代码的复用性外,还可以解决项目中紧偶合的问题,提高程序的可扩展性.。耦合度讲的是模块模块之间,代码代码之间的关联度,通过对系统的分析把他分解成一个一个子模块,子模块提供稳定的接口,达到降低系统耦合度的的目的,模块模块之间尽量使用模块接口访问,而不是随意引用其他模块的成员变量。

     

    多态有什么好处?

    有两个好处:

    1. 应用程序不必为每一个派生类编写功能调用,只需要对抽象基类进行处理即可。大大提高程序的可复用性。//继承 
    2. 派生类的功能可以被基类的方法或引用变量所调用,这叫向后兼容,可以提高可扩充性和可维护性。 //多态的真正作用

     

    多态在什么地方用?

    可以用在方法的参数中和方法的返回类型中。

    在方法中的参数,请看下面的例子:

    复制代码

       public abstract class Driver
        {
            public void run();//让子类来运行
        }
    
    
    class SBenz : Driver
        {
            public void run()
            {
                Console.WriteLine("Benz在以200迈的速度在run");
            }
        }
    
    
    
    
     class JD : Driver
        {
            public void run()
            {
                Console.WriteLine("JD is running...");
            }
        }
    
    
     class Person
        {
            private Driver driver;
            public Person()
            {
    
            }
            public Person(Driver driver)
            {
                this.driver = driver;
            }
            public void drive()
            {
                driver.run();
            }
            public void setDriver(Driver driver)
            {//运用参数多态,以后不管买什么车都可以
                this.driver = driver;
            }
       }
    
    
    
    
    static void Main(string[] args)
            {
                Person p = new Person();
                JD jd = new JD();//刚开始没钱就买辆JD吧
                p.setDriver(jd);
                p.drive();
                SBenz benz = new SBenz();//有钱换车了
                p.setDriver(benz);
                p.drive();
            }

    复制代码

     

    在方法的返回类型中,请看下面的例子:

    上面的例子中,不管是JD还是Benz都是我们自己直接new出来的.我们可以设计一个工厂类,专门生成汽车

    /**
    *   我们将多态使用在方法的返回类型中
    *   Driver可以是抽象类,也可以是接口,JD和Benz分别继承该类或实现该借口

    */

    复制代码

     public class CarFactory
        {
            public Driver factory(String carName)
            {
                if (carName.Equals("JD"))
                {
                    return new JD();
                }
    
                else if (carName.Equals("Benz"))
                {
                    return new SBenz();
                }
    
                else
                {
                    Console.WriteLine("对比起,不伺候");
                    return null;
                }
            }
        }

    复制代码

    这实际上就是设计模式中的简单工厂模式!

    类型的参数.,传入参数的时候,可以传入任何一个类的对象,只要是对应的类的对象名称就可以了
    这就是多态的应用!

    展开全文
  • 多态的理解以及作用

    千次阅读 2022-05-27 14:47:40
    一、多态什么   多态在面向对象中的定义:指为不同数据类型的实体提供统一的接口。   比如有动物(Animal)之类别(Class),而且由动物继承出类别鸡(Chicken)和类别狗(Dog),并对同一源自类别动物(父类...

    一、多态是什么

      多态在面向对象中的定义:指为不同数据类型的实体提供统一的接口。
      比如有动物(Animal)之类别(Class),而且由动物继承出类别鸡(Chicken)和类别狗(Dog),并对同一源自类别动物(父类)之一消息有不同的响应,如类别动物有“叫()”之动作,而类别鸡会“啼叫()”,类别狗则会“吠叫()”,则称之为多态。

    二、多态的类型

      多态分为静态多态和动态多态。

    • 静态多态:在编译期间实现多态,相同的方法传递不同的参数,实现不同的效果。

      C++代码实现:

    // print()函数
    void print(const char* str,int width);
    void print(double i ,int width);
    void print(const char* str);
    // 使用print()函数时,编译器将根据所采取的用法使用有相应特征标的原型
    print("abc",12);
    print(2.2,55);
    print("def");
    
    • 动态多态:在运行期间实现多态,一个类的引用可以被赋值为不同的子类对象。

       实现动态多态的必要条件:

    • 编程语言要支持继承
    • 子类可以重写(override)父类中的方法
    • 父类引用可以指向子类对象

      C#代码实现:

    public class AnimalFactory{
    	public static Animal createAnimal(string type){
    		Animal animla=null;
    		switch(type){
    			case "cat":
    				animal=new Cat();
    				break;
    			case "bird":
    				animal=new Bird();
    				break;
    			case "dog":
    				animal=new Dog(); 
    				break;
    		}
    	}
    }
    

    三、多态解决什么问题

    1. 应用程序不必为每一个子类编写功能调用,只需要对父类进行处理即可。大大提高程序的可复用性。
    2. 子类的功能可以被父类的方法或引用变量所调用,就像Animal类,可以提高可扩充性和可维护性。
    展开全文
  • 多态的理解和应用
  • 2、多态什么? 3、多态怎么用? 1、为什么要用多态 1)提高了代码的维护性 (通过继承和实现来保证) 2)提高了代码的扩展性 (通过多态来保证) 3)降低代码耦合度 2、多态基本概念 1.多态是继封装、继承之后,...
  • JAVA多态的理解及应用

    2021-12-14 18:45:55
    用详细的代码和注释带你理解多态(JAVA)
  • 我们在学习的过程中肯定会遇到很多的问题,比如我刚开始学多态的时候,遇到的问题,就是,多态什么,但后面我学会后,卡在了一个地方,那就是多态到底该怎么使用呢,可能大部分人都会有这种问题,感觉多态其实和...
  • 多态 同一行为,具有多个不同表现形式 前提 继承或者实现【二选一】 方法的重写【意义体现:不重写,无意义】 父类引用指向子类对象【格式体现】 多态的体现 父类类型 变量名 = new 子类对象; 变量名.方法名(); ...
  • 什么多态多态什么用途? 什么多态多态什么用途? 什么多态多态什么用途? 什么多态多态什么用途?
  • 什么是编译时 只是单纯的将代码翻译成一种中间语言(例如...什么是Java编译时多态 通过编译即可明确是哪一个多态方法的调用 比如说Java的重载,只通过参数的数量和类型不同来实现多态,那么在编译时我们可以单纯根据
  • 文章目录理论二:封装、抽象、继承、多态分别可以解决哪些编程问题?封装(Encapsulation)抽象(Abstraction)继承(Inheritance)多态重点回顾关于封装特性关于抽象特性关于继承特性关于多态特性 理论二:封装、...
  •   在学习《大话设计模式》的时候经常会遇到多态,但什么多态?为什么要使用多态什么时候用多塔?多态是如何实现的?使用多态什么好处?我们将根据以上五个问题展开激烈的讨论。 什么多态?   多态,...
  • 2. 使用多态机制解决喂食物问题 3.测试类 4. 新增动物种类和食物种类 4.1 修改测试类 4.2 测试结果 1.背景介绍 在Master主人类中,feed方法有两个,主人给狗喂一次食物,主人给猫喂一次食物,他们都对应一次...
  • C++ 多态问题详解

    2017-06-10 16:58:45
    C++ 多态问题详解   一、多态问题的产生   class parent { public: parent(int a=0) { this->a = a; } void print() { cout  "父类a:" aendl; } protected: private: int a; };   class child : ...
  • 文章目录背景方案枚举接口实现多态总结 背景 工作中经常会有一些swich case或者if else的情况。一般这种情况一开始可能只有几个,但是几次迭代之后可能就会有非常多。...这个问题不难,关键解决方案就是多态+反射。多
  • 5.学习虚基类在解决二义性问题中的作用。 6.熟悉多态分类,理解静态联编和动态联编概念。 7.掌握运算符重载方法。 8.理解虚函数、纯虚函数和抽象类概念。 9.掌握用抽象类和多态性实现编程的方法。
  • 务背景,这里你只需要简单了解一下即可。在面向对象的实战篇中,我们会有单独两节课,利用 OOP 的设计思想来详细介绍虚拟钱包的设计实现。复制代码public cl
  • 什么多态

    千次阅读 2019-08-20 20:45:31
    什么多态 多态的特点 多态存在的三个必要条件 多态时成员变量、静态方法和非静态方法的特点 什么多态 多态就是一个对象变量可以指向多种实际类型的现象,同一个事件发生在不同的对象上会产生不同的结果。 ...
  • python中的多态什么_Python中的多态

    千次阅读 2020-07-29 13:36:05
    python中的多态什么 Python中的多态 (Polymorphism in Python) Polymorphism is a concept of Object Oriented Programming, which means multiple forms or more than one form. Polymorphism enables using a ...
  • python 中面向对象三...但是关于python的多态问题,在业界存在着两种声音。一种认为存在,一种认为不存在。 以下列代码为例:class Animal(object): def talk(): passclass Dog(Animal): def talk(): print(...
  • 什么多态?为什么多态?有什么好处?

    万次阅读 多人点赞 2018-07-13 16:48:56
    多态可以分为变量的多态,方法的多态,类的多态.我这里强调的是类的多态,这是我们在以后的工作中经常回用到的首先,有这样一个系统:有个学生工作从达内毕业了,作的还不错.买了辆捷达汽车.这个系统应该如何设计呢?按照OO...
  • C#多态详解

    千次阅读 2021-10-13 21:15:26
    定义 why? what? How? 实现多态的两个要素 案例 使用多态的好处 String类
  • 1多态的定义 C++的三大特征封装、继承、多态。其中多态是指,同一操作作用于不同的对象,产生不同的执行结果。 封装:对客观事物进行抽象,隐藏起内部属性和实现细节,仅对外部提供接口 作用:提高安全性,避免不...
  • jackson多态解析问题解决方案

    千次阅读 2020-11-18 09:32:11
    jackson实现多态解析 类结构: 接口类:Criteria public interface Criteria { //自己的接口 } 实现类1:AndCriteria @Data public class AndCriteria implements Criteria { //实现的接口 } 实现类2:OrCriteria ...
  • 多态的弊端 * * 不能访问子类的特有功能 * * 如何解决? * 1)创建子类的具体对象来访问子类的具体功能! * 代码实现角度来说没有任何问题,但从堆内存的角度考虑:创建一个新的对象,需要在堆内存中产生一个地址值...
  • java中的多态是指什么

    2021-03-09 06:47:05
    针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。多态是同一个行为具有多个不同表现形式或形态的能力。多态就是同一个接口,使用不同的实例而...
  • 什么要使用多态特性 项目需求: 因为各种不确定原因,包括认为原因,ODU设备会自动的切换到其它类型的设备,而切换后的设备,和原设备有很多不同的地方。如何完美的实现这个切换呢? 解决方案: 使用多态。 只...
  • abstract class Employee { public abstract double earnings(); } class YearWorker extends Employee { //重写earnings()方法 ...class MonthWorker extends Employee { ...上述代码中要重写earnings方法,和计算...
  • 前言:上一节我们简单提到了面向对象的四大特性,这一节我们聊一聊每个特性存在的意义和目的,以及他们能够解决那些编程问题。 封装(Encapsulation) 封装也叫信息隐藏或者数据访问保护。类通过暴露有效的访问...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 138,829
精华内容 55,531
关键字:

多态解决了什么问题