当前位置: 首页 > news >正文

8.继承和多态

继承

使用场景/使用原因:

父类成员的访问

构造方法

super和this的区别

代码块的执行顺序

访问修饰符

多态

方法重写的规则


继承

  • 使用场景/使用原因:

    • 进行共性抽取,实现代码复用
  • 继承的双方为父类/基类,子类
  • 关键字:
    extends; 格式:class 类名 extends 父类{}

  • 每个子类都是只有一个直接父类,不支持多继承(但可以使用接口)
  • 在主函数中创建子类的实例引用后,可以调用父类的非private成员变量和方法
  • 父类成员的访问

    • 访问成员变量
      • (条件: Stu是子类,teacher是父类)
        Stu student = new Stu( );
        student.tName;
    • 注意:如果父类和子类中有同名的变量时,父子类同名成员变量属于变量隐藏,子类调用时,优先使用自身的成员;若没有就调用父类的,否则就会编译报错
    • 当子类对象访问 父类和子类同名方法时
      • 若父类和子类同名方法的参数列表不同(重载),根据调用方法适 传递的参数选择合适的方法访问,如果没有就报错
    • 同名的实例方法,优先执行子类重写后的方法
    • 思考:继承后同名成员会调用子类的,如果想调用父类的的同名成员,应该如何操作?
      • 使用super关键字
      • 用法:super.成员变量
      • tip: 只能在非静态方法中使用(因为静态方法不依赖于对象)
    • 构造方法

      • 格式:public 类名(){}
      • ⭐子类对象构造时,要先触发基类构造方法,再执行子类的构造方法,并将子类自己新增加的成员初始化完整
      • 构造方法和当前的类名相同,可以有参数
      • (在子类构造方法中第一行默认隐式调用super() )
      • 如果类内没有自定义构造方法时,编译器会给出一个 不含参数的构造函数
      • super和this的区别

        • thissuper
          调用位置构造方法的第一行构造方法的第一行
          指代当前对象/调用实例方法的对象引用父类的成员
        • 相同点:只能在类的非静态方法使用,用来访问非静态成员方法和字段
      • 代码块的执行顺序

        • (调用两个实例对象时)
        • 父类静态代码块--子类静态代码块--父类实例代码块---父类构造方法--子类实例代码块--子类构造方法
        • tip:一个静态代码块只执行一次
      • 访问修饰符

        • public >protected> default>private
          不同包的非子类--不同包的 子类--相同包的不同类--相同包的相同类/当前类
      • final关键字
        • 修饰变量,表示常量(不能修改)
        • 修饰类,表示此类不能被继承
      • 继承和组合
        • 继承是 is-a
        • 组合是 has -a/a part of
        • 多态

        • 概念:同一行为,不同对象有不同实现;使用父类 引用指向子类对象,调用重写实例方法时发生动态绑定。
        • 条件:子类继承了父类;子类重写了父类的方法 且内容不同;通过父类的引用调用重写的方法
          父类类型的引用变量,指向子类对象(发生向上转型);调用被子类重写过的那个方法 → 实际跑的是子类重写后的方法
        • 方法重写的规则

          • 重写的 方法名 和 参数列表不能改变
          • 返回值类型可以不同,但要有父子关系;方法内容不同
          • 访问权限不能比父类中被重写的方法的访问权限更低
          • 父类被static、private修饰的方法、构造方法都不能被重写
        • 向上转型
          • 将子类转为父类
          • 使用场景
            • 直接赋值;方法传参;方法返回
        • 向下转型
          • 将父类转为子类。需要进行强制类型转化。不一定能转成功
          • instanceof关键字,判断是否安全。例:if(animal instanceof Cat)
      http://www.jsqmd.com/news/1392350/

      相关文章:

    • 【安装剪映exe到指定盘】
    • 全自动丝印机源头厂家推荐:领创精密如何满足多行业丝印需求 - 品研笔录
    • 【手机+电脑】通达信SVIP《三步擒龙》V3.30套装指标升级日志
    • 反向图灵测试!这个「纯手工大模型」,把网友聊崩了
    • 人生代码|第1关:输入即命运——入参不对,努力白费。
    • 【信息科学与工程学】【通信工程】第一百六十五篇 OTN网络中的物理设计03
    • 【NeurIPS 2022】FlashAttention:IO 感知的快速内存高效精确注意力|从高效Transformer内核视角
    • G-Helper双击没反应、闪退怎么办?一份华硕控制工具启动故障的实战排查路线图
    • 小米高级Android面经:Android 6.0+运行时权限机制、WMS窗口管理做了哪些事、MVI架构
    • 关于文献【26年ACL时间检验奖3】
    • 基于 RA8P1 的实时摄像头预览工程
    • 一次“偏科”的微调实验:Xiaothink-T17-RWKV5-MLA-Instruct-Pro 为何中文更强、前端变弱?
    • D2RML保姆级多开教程:暗黑2重制版多开账号一键全部拉起,建令牌到排错一篇讲透
    • PhotoGIMP免费上手指南:3分钟把GIMP变成熟悉的Photoshop界面
    • 2026年:新乡沟槽管道支护箱出租响应快性价比佳,基建配套不用瞎找家-力托钢结构 - 行业甄选汇
    • 大模型AI - Agent 记忆系统
    • 网页视频下载不用愁:猫抓浏览器资源嗅探扩展完整使用指南
    • G-Helper终极指南:华硕笔记本告别臃肿原厂软件的轻量级控制方案
    • 企业微信 vs 钉钉:工厂与制造企业的数字化协同平台选型指南
    • 2026年8月郴州屋顶漏水维修哪家好?正规防水修缮科普指南 - 聪居到家
    • 技术人员到管理者的角色转变
    • 为什么 G-Helper 无法启动?5个完整修复步骤帮你快速打开华硕控制工具
    • AI代码生成实战:从环境配置到项目集成,Codex与Claude Code全流程指南
    • 深度 | 8 天近 10 亿美元、40% 项目将被砍:2026 Agent 融资的「冷热分层」
    • 渝中区楼顶漏水怎么解决?2026 专业防水公司分享卫生间、楼顶、外墙、阳台 + 阳光房渗漏专业解决方案,一站式解决房屋漏水难题 - 超人防水
    • 贵州微信网站建设全流程解析:中小企业如何利用私域流量实现低成本高增长
    • 河北增资扩股与融资股权设计找什么机构?三类服务方向对比 - 米諾
    • 自动化运维-Ansible触发器与变量
    • 跨平台Git可视化客户端SourceGit上手攻略:把版本控制从“背命令“变成“点鼠标“
    • 武汉学虚拟仿真数字人设计去哪 AI 实时特效培训班零基础招生 - 湖北找学校