什么是多态?为什么用多态?有什么好处?多态在什么地方用?

转载 2015年11月21日 10:55:22

什么是多态?

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

 

为什么要用多态呢?

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

 

多态有什么好处?

有两个好处:

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;
            }
        }
    }
复制代码

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

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

多态,前提,特点,好处,弊端

多态:对象在不同时刻表现出来的多种状态。 举例: 水(水蒸气,冰,水) 动物和狗。 动物是动物, 动物是狗。 狗是狗。 狗是动物。 Java代码的体现: 多态的前提: A:要有继承关系...

java中,什么是封装,继承,多态和抽象,好处与用法

Java的四大特性分别是封装,继承,多态与抽象。 1.封装 封装的概念:把对象的属性和方法结合成一个独立的整体,隐藏实现细节,并提供对外访问的接口。 封装的好处:...

多态的体现好处特点

android培训、java培训、期待与您交流! 多态:可以理解为事物存在的多种体现形态。 人:男人,女人。 动物:猫,狗。 猫 x = new 猫(); 动物 x = new 猫(...

多态的好处 例题介绍

namespace 多态的好处 { class Person//所有类都是object的子类。这里的person也是object的子类 { public Person(...

Java 多态的好处

什么是多态 面向对象的三大特性:封装、继承、多态。从一定角度来看,封装和继承几乎都是为多态而准备的。这是我们最后一个概念,也是最重要的知识点。 多态的定义:指允许不同类的对象对同一消息做出响应。即同一...

深拷贝与浅拷贝,多态的好处,内存泄露与内存溢出区别,枚举类,javaweb中libraries区别

深拷贝与浅拷贝 1)深拷贝是指源对象与拷贝对象互相独立,其中任何一个对象的改动都不会对另外一个对象造成影响。 2)浅拷贝是指源对象与拷贝对象共用一份实体,仅仅是引用的变量不同(名称不同)。对其中...

0904 Java中的多态的成员访问特点、好处、坏处

Java中的多态目录Java中的多态目录 多态的成员访问特点 成员访问特点的说明 代码块 答案 多态的好处和弊端 好处和弊端多态的成员访问特点成员访问特点的说明/* 多态:同一个对象(事物)...

多态的使用和概述以及弊端和好处

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和...

【超经典】Java多态有什么好处?怎样用?

多态可以分为变量的多态,方法的多态,类的多态.我这里强调的是类的多态,这是在以后的工作中经常会用到的。多态的表现形式有方法重载,方法改写,多态变量和泛型。重载是一种静态的多态性,在程序编译时确定被调用...

谈谈学习的关于继承与多态以及虚表的概念的内容有不对的地方多多指教

虚表
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:什么是多态?为什么用多态?有什么好处?多态在什么地方用?
举报原因:
原因补充:

(最多只允许输入30个字)