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

转载 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核心技术 第一章 接口、继承与多态

课程主要包含: 第一讲 类的继承 第二讲 Object类 第三讲 对象类型的转换 第四讲 方法的重载 第五讲 方法的重写 第六讲 多态 第七讲 抽象类和接口
  • 2017年05月02日 11:37

java中实现多态的机制是什么?

面向对象编程有三大特性:封装、继承、多态。 封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据。对外界而已它的内部细节是隐藏的,暴露给外界的只是它的访问方法。 ...
  • BornLiLi
  • BornLiLi
  • 2017-02-15 18:31:50
  • 12911

什么是多态?为什么使用多态?

看Java核心技术这本书时,多态的内容讲解的很少,只是举个例子告诉我们怎样使用多态,而没有明确说明为什么使用多态的问题。 谈到面向对象的编程语言时不可避免的就会介绍继承,子类可以继承父类除priva...
  • kaweeee
  • kaweeee
  • 2017-09-15 15:36:29
  • 1086

多态(Polymorphism)

 如果让你选择一项面向对(Object Oriented,后文简称OO)象最重要的或者最能表现OO特点的技术特征,会是什么?   封装(wrap)、继承(inheritance)、重载(overrid...
  • njchenyi
  • njchenyi
  • 2007-03-04 15:57:00
  • 51566

什么是多态

多态是面向对象的重要特性,简单点说:“一个接口,多种实现”,就是同一种事物表现出的多种形态。编程其实就是一个将具体世界进行抽象化的过程,多态就是抽象化的一种体现,把一系列具体事物的共同点抽象出来, 再...
  • dlfer11
  • dlfer11
  • 2011-05-23 18:23:00
  • 11749

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

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

多态以及其优缺点

多态:可以理解为事物存在的多种体现形态,比如说人:男人、女人;动物:猫,狗。 多态: 多种形态。 这里要重点讲的就是对象的多态性。 狗 x = new 狗(); 动物 y = new 狗()...
  • xuchuangqi
  • xuchuangqi
  • 2016-07-15 21:57:37
  • 1197

什么是多态?为什么用多态?有什么好处?

多态可以分为变量的多态,方法的多态,类的多态.我这里强调的是类的多态,这是我们在以后的工作中经常回用到的 首先,有这样一个系统:有个学生工作从达内毕业了,作的还不错.买了辆捷达汽车.这个系统应该...
  • onlypity9
  • onlypity9
  • 2013-03-25 17:35:00
  • 353

什么是多态?为什么用多态?有什么好处?[转]

多态可以分为变量的多态,方法的多态,类的多态.我这里强调的是类的多态,这是我们在以后的工作中经常回用到的首先,有这样一个系统:有个学生工作从达内毕业了,作的还不错.买了辆捷达汽车.这个系统应该如何设计...
  • ssyyll
  • ssyyll
  • 2008-10-28 22:56:00
  • 14912

Java多态性详细举例说明(很经典例子)

(一)相关类
  • free4294
  • free4294
  • 2014-09-04 16:37:28
  • 29260
收藏助手
不良信息举报
您举报文章:什么是多态?为什么用多态?有什么好处?多态在什么地方用?
举报原因:
原因补充:

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