多态及实现方式


一,多态的含义

在面向对象的思想中,抽象,封装,继承,多态这几个词已经是我们经常见到的了。首先,多态是在继承的基础上形成的,多态是指不同的子类在继承父类后分别都重写覆盖了父类的方法,即父类同一个方法,在继承的子类中表现出不同的形式。多态成立的另一个条件是在创建子类时候必须使用父类new子类的方式。如果一个语言只是支持类而不是支持多态的,那么该语言就不能说是面向对象而仅仅是基于对象。

二,多态的具体实现

如果对多态的概念理解不清楚,可以举一几个例子帮助理解

第一个例子:该例子出自百度百科,链接地址

public interface Parent//父类接口
{
    public void simpleCall();
}
public class Child_A implements Parent
{
    public void simpleCall();
    {
    //具体的实现细节;
    }
}
 
public class Child_B implements Parent
{
    public void simpleCall();
    {
    //具体的实现细节;
    }
}

 
 
Parent pa = new Child_A();
 
pa.simpleCall();

显然是调用Child_A的方法;而

 
Parent pa = new Child_B();
pa.simpleCall();

则是在调用Child_B的方法。

所以,我们对于抽象的父类或者接口给出了我们的具体实现后,pa 可以完全不用管实现的细节,只访问我们定义的方法,就可以了。事实上,这就是多态所起的作用。

 
 
 
 
第二个例子感觉也很容易理解,该例子出自百度知道,链接地址
 
鸡是所有其它鸡的基类, 定义了一个方法shape(), 此方法能指明鸡的形态. 所有的子类[火鸡,山鸡,田鸡等],都有这个shape方法, 表明自己的形态,如果用下面的方法定义我需要具体的鸡,

[基类 引用 = 实现类的对象]

for example:

鸡 a = new 火鸡();

鸡 a = new 田鸡();

鸡 a = new 山鸡();

鸡 a = new 母鸡();

当我使用的时候, 我采用 a 这个引用,

a.shape(), 就会得到鸡的形态.

如果我定义的是

鸡 a = new 火鸡();

那么a.shape得到的是火鸡的形态, 而不需要用具体的

火鸡 a = new 火鸡(); 再通过a.shape得到火鸡的形态
 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM