zoukankan      html  css  js  c++  java
  • 继承

    继承的基本语法

    继承:在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/
  • 相关阅读:
    学习 Shell —— 括号、引号
    darknet YOLOv2安装及数据集训练
    计算机设计思想 —— 总线
    GSM —— 商业蜂窝通信系统
    Java IO(输入输出)
    整数运算、浮点运算与溢出
    机器学习:Colorization using Optimization
    天池历届大赛答辩PPT及视频
    “libgomp.so.1: version `GOMP_4.0' not found” || “libstdc++.so.6: version `CXXABI_1.3.8' not found”错误
    字符串转换为数组
  • 原文地址:https://www.cnblogs.com/baixingqiang/p/5531311.html
Copyright © 2011-2022 走看看