继承

继承的基本语法

     在JAVA语言中,用extends关键字表示一个类继承另一个类.列如:

              public class Sub extends Base{

                    ......

               }      

          Java语言不支持多继承,即一个类正能继承一对类.

          尽管一个类正能有一个父类,但是它可以有多个间接地父类.

方法重载

      对于类的方法(包括从父类中继承方法),如果有两个方法名相同,但参数不一致,那么可以说,一个方法是另一个方法的重载方法.

      重载方法必须满足一下条件:

       1.方法名相同

       2.方法的参数类型,个数,顺序至少有一项不相同.

       3.方法的返回类型可以不相同

       4.方法的修饰符可以不相同

方法覆盖

       覆盖方法必须满足多种约束,下面分别介绍

       1.子类方法的名称,参数签名和返回类型必须与父类方法的名称,参数签名和返回类型一致.

       2.子类方法不能缩小父类方法的访问权限.

       3.子类方法不能抛出比父类方法更多的异常

       4.方法覆盖只存在于子类和父类之间,在同一个类中方法只能被重载,不能被覆盖.

       5.父类的静态方法不能被子类覆盖为非静态方法.

       6.子类可以定义与父类的静态方法同名的静态方法,以便在子类中隐藏父类的静态方法.

       7.父类的非静态方法不能被子类覆盖为静态方法.

       8.父类的私有方法不能被子类覆盖

       9.父类的抽象方法可以被子类通过两种途径覆盖:一是子类实现父类的抽象方法;二是子类重新声明父类的抽象发法.

       10.父类的非抽象方法可以被覆盖为抽象方法

多态

     多态的特性如下:

 

继承的利弊和使用原则

     继承是一种提高程序代码的可重用性,以及提高系统的可扩展性的有效手段.

    1.继承树的层次不可太多

       层次太多,会导致以下弊端:

      (1)对象模型的构造太复杂,难以理解,增加了设计和开发的难度.继承树底层的子类会继承上层所有直接父类或间接父类的方法和属性.

      (2)影响系统的可扩展性.继承色层次越多,在继承树上加一个新的继承分支需要创建的类越多

    2.继承树的上层为抽象层

       当一个系统使用一颗树继承树上的类时,应该尽可能地把引用变量声明为继承树的上层类型,这可以提高两个系统之间的松耦性.

      位于继承树上层的类具有以下作用:

       (1)定义了下层类都拥有的相同属性和方法,并且尽可能地为多数方法提供默认的现实,从而提高程序代码的可重用性

       (2)代表系统的借口,描述系统所有能提供的服务.

    3.继承关系的最大弱点:打破封装

    4.精心设计专门用于被继承的类

    5.区分对象的属性与继承

比较组合与继承

原文地址:https://www.cnblogs.com/yangronglin/p/5531337.html