• 继承


    继承的基本语法

    继承:在JAVA中 ,用extends关键字来表示一个继承另一个类.

    public class extends Bass{
      ...
    }

    以上代码表示Sub继承了Bass类.那么Sub继承了Bass类的那些东西呢?

    • 当Sub类和Bass类位于同一个包中Sub类继承Bass类中public,protected和默认访问级别的成员变量和方法.
    • 当Sub类和Bass类位于不同一个包中Sub类继承Bass类中public,protected访问级别的成员变量和成员方法.

    Java语言不支持多继承即一个类只能直接继承一个类否则导致变异错误.

    例如:

    public class Sub extends Bass1,Bass2,Bass3{...}

    尽管一个类只能有一个直接父类,但它可以有多个间接父类.

    例如:

    class Bass1 extends Bass2{...}
    class Bass2 extends Bass3{...}

    所有的Java类都直接或间接地继承了java.lang.Object类.

    方法重载

    类的同种功能有多重种实现方式.

    例如:

    java.lang.max()方法能够从两个数中区出最大值,他有多种实现方式.

    以下程序多次调用类的max()方发,运行时,Java虚拟机先判断给定的参数的类型然后在判定执行那个nax()方法.

    方法重载必须满足的条件:

    • 方法名相同
    • 方法的参数类型,个数,顺序至少有一项不同.
    • 方法的返回类型可以不同
    • 方法的修饰符不可以相同

    下面我们来看一下题目来看一下那些类可以构成重载

    例如:在Sample类中已定义了一个amethod()方法.

     方法覆盖

    public voidwrite(){
    //用手写字
    ...
    }

    由于Sub1类的写字的实现方式与Base类不一样,因此在Sub1类中必须重新定义write()方法.

    public void write(){
    //用脚写字
    ...
    }

     覆盖方法必须满足多种约束.

    • 子类方法的名称,参数签名和返回类型一致
    • 子类方法不能缩小父类方法的访问权限
    • 子类方法不能抛出比父类方法更多的异常
    • 方法覆盖只存在与子类和父类之间在同一个类中方法只能被重载,不能被覆盖
    • 父类的静态方法不能被子类覆盖为非静态方法
    • 子类可以定义与父类的静态方法,以便在子类中隐藏父类的静态方法
    • 父类的非静态方法不能被子类覆盖
    • 父类的私有态方法不能被子类覆盖

    方法重载与方法覆盖的异同

     组合与继承对决

                                                                    组合与继承的对应关系

    组合关系 继承关系
    局部类 父类
    整体类 子类
    从整体到局部的类的分解过程 从子类到父类的抽象过程
    从局部到整体的类的组合过程 从符类到子类的扩展过程

    使用继承关系:

     

    使用组合关系

    更多详情请关注 http://www.cnblogs.com/baixingqiang/
  • 相关阅读:
    Codeforces Round #388(div 2)
    Codeforces Round #387(div 2)
    Codeforces Round #386(div 2)
    Codeforces Round #385(div 2)
    Codeforces Round #384(div 2)
    Wannafly Union Goodbye 2016
    写在2016的最后一天——给未来的自己
    2016HDU校赛
    2016BUAA校赛决赛
    codevs 1344 模拟退火
  • 原文地址:https://www.cnblogs.com/baixingqiang/p/5531311.html
Copyright © 2020-2023  润新知