多态是一种编程技巧
它增加论了程序的可扩展性
比如你要做个篮子放水果,你当然不希望造这样的篮子--苹果篮子,橘子篮子,梨篮子,正常人都会想,麻烦啊,我就造个篮子,什么都能放,干嘛造那么多啊?
回归程序:你造个篮子 basket();参数是水果 fruit,这样你调用的时候就可以这样 basket(fruit f);然后往里放苹果啊,梨啊,什么都行,只要是水果类的子类
好处:这样设计你的程序,等你的参数变了的时候,只要还是水果,你就不用去改程序了,这就是可扩展性的体现
fruit f = apple a
这就是一个多态的应用
多态应用的三个条件:
继承 (apple当然继承了fruit)
子类对象指向父类引用(a是apple的一个对象,f是fruit类父类的一个引用)
重写(就是子类重写父类继承来的方法。父类实现了一个方法,他不一定适合子类,因为如果适合你也就不用重新定义一个类了,用父类就行了。这时就需要去重新写一个方法,实现新的功能)
“a是apple的一个对象”这句话是不对的 ,a是一个对象的引用 而非一个对象,“子类对象指向父类引用”这句话对应的是这个句子“Fruit f = new Apple();”
多态和继承的概念总是联系在一起的
比如说 class Father 和 class son extends father
可以这样实例化 Father f=new son()
但是不能这样 son s=new father()
只有向上转才是有效的啊
至于有什么作用 多写点程序就体会出来了.
多态性和上转型对象联系起来的。具体有很细的分类,我举个例子大概说明下,楼主可以找本书自己看看:
比如:父类叫 哺乳动物。父类中有个 方法 是:“叫”
猫类和狗类都继承这个方法:但是
猫类调用后产生的行为是:“喵喵~~”
狗类调用后产生的行为时:“汪汪~~”。
在了解多态前请先了解下上转型对象
我个人理解为,子类继承父类的方法,扩充父类的方法
父类的方法可以为一个空方法,子类方法对其进行功能上的扩充.就想一楼举的例子一样,父类中只定义了叫的方法,子类猫和狗在重载父类的方法之后进行了功能上的扩充,定义了自己的方法.