多态

  多态是面向对象编程的一个重要特征。有两种意义的多态,

  一种是操作名称的多态,即有多个操作具有相同的名字,但这些操作所接受的消息类型必须不同。

也就是功能多态性,是指可以向功能传递不同的消息,以便让对象根据相应的消息产生一定的行为。对象的功能通过类中的方法来体现,那么功能多态性就是方法的重载。

  方法重载(overloading)是指一个类中可以有多个方法具有相同的名字,但这些方法的参数必须不同,或者参数的个数不同,或者参数的类型不同。

  另一种多态是和继承有关的多态。与继承有关的多态性是指父类的某个实例方法被子类重写时,可以各自产生自己的功能行为,即同一个操作被不同类型对象调用时可能产生不同的行为。

  如果一个类有很多子类,并且这些子类都重写了父类的某个实例方法,把子类创建的对象的引用放到一个父类的对象中,就得到了该对象的一个上转型对象,那么这个上转型对象在调用这个实例方法的时候就可能具有多种形态,因为不同的子类在重写父类的实例方法时可能产生不同的行为。

 

注意:方法重写不同于方法重载。

子类可以隐藏已继承的方法,子类通过方法重写来隐藏继承的方法。

方法重写(override)是指:子类中定义一个方法,并且这个方法的名字、返回类型、参数个数和类型与从父类继承的方法完全相同。

重写时注意:

1、作用域不能缩小:父类方法为public,子类的同名方法只能是public

2、异常不能扩大:子类方法抛出的异常必须与父类方法抛出的异常相同或者是该异常的子类Exception异常类

 当然,父类方法不抛出异常,子类也不能抛出异常

3、父类的静态方法可以被子类的静态方法重写

posted @ 2014-04-10 10:43  binbiny  阅读(295)  评论(0编辑  收藏  举报