DAY7 继承多态

news2024/10/11 16:38:26

继承

 目的

提高代码的重用性,减少一些重复代码的书写

权限修饰符

就是是用来限制类中的成员(成员变量、成员方法、构造器)能够被访问的范围。

private 只能本类
缺省 本类、同一个包中的类
protected 本类,同一个包中的类、子孙类中
public 任意位置

特点

单继承:Java是单继承模式:一个类只能继承一个直接父类

多层继承:Java不支持多继承,但支持多层继承
祖宗类:Java中所有的类都是object类的子类

就近原则:优先访问自己类中,自己类中的没有才会访问父类,当子类要访问相同的父类的内容则需要用super关键字

方法重写

当子类觉得父类中的某个方法不好用,或者无法满足自己的需求时,子类可以重写一个方法名称、参数列表一样的方法,去覆盖父类的这个方法,这就是方法重写。

注意事项

  • @Override增加注解
  • 子类重写父类方法时,访问权限必须大于或者等于父类该方法的权限(public > protected >缺省)
  • 重写的方法返回值类型,必须与被重写方法的返回值类型一样,或者范围更小。
  • 私有方法、静态方法不能被重写,如果重写会报错的。

 常见场景

子类重写Object类的toString()方法,以便返回对象的内容。

子类构造器的特点

子类的全部构造器,都会先调用父类的构造器,再执行自己。

简单举个例子

首先创建一个People类,定义姓名,性别,还有有参,无参构造器,以及getter和setter方法

package com.test.exten;

public class People {
    private  String name;
    private  char sex;

    public People(String name, char sex) {
        this.name = name;
        this.sex = sex;
    }

    public People() {
    }

    @Override
    public String toString() {
        return "People{" +
                "name='" + name + '\'' +
                ", sex=" + sex +
                '}';
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public char getSex() {
        return sex;
    }

    public void setSex(char sex) {
        this.sex = sex;
    }
}

创建一个People类,定义技能,有参和无参构造器。

package com.test.exten;

public class Teacher extends People {
    private String skill;

//    public Teacher(String name, char sex, String skill) {
//        super(name, sex);
//        this.skill = skill;
//    }

    public Teacher(String skill) {
        this.skill = skill;
    }

    public String getSkill() {
        return skill;
    }

    public Teacher() {
    }

    public void setSkill(String skill) {
        this.skill = skill;
    }

}

创建测试类Test

package com.test.exten;

public class Test {
    public static void main(String[] args) {
        Teacher t = new Teacher();
        t.setSkill("唱歌");
        t.setName("bob");
        t.setSex('男');
        System.out.println(t.getSkill());
        System.out.println(t.getSex());
        System.out.println(t.getName());
    }
}

结果 

但是这样创建就会报错

在People中创建有参构造器如下就可以实现这个需求

   public Teacher(String name,String skill,char sex) {
        super(name, sex);
        this.skill = skill;
    }

THIS调用兄弟构造器

作用:在构造器中调用本类的其他构造器。

super(...)this(...)必须写在构造器的第一行,而且两者不能同时出现。

多态

概念

多态是在继承/实现情况下的一种现象,表现为:对象多态、行为多态。

对象多态:人这个对象可能是学生、老师等

行为多态:老师教书,歌手唱歌等

案例:动物有狼和乌龟(对象多态),但是狼跑的快、乌龟跑的慢(行为多态)

前提

有继承/实现关系;存在父类引用子类对象;存在方法重写。

作用

在多态形式下,右边对象是解耦合的,更便于扩展和维护。

定义方法时,使用父类类型的形参,可以接收一切子类对象,扩展性更强、更便利。
多态下不能调用子类独有功能

多态下的类型转换问题 

注意

需要idea开启注解功能

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2205244.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

thenable的执行时机

thenable执行只有2个时机 1.触发resolve()时,代码尚未注册then的内容,那么直到代码扫描到then那一行,才会把then的内容放进队列 2.先注册then,直到后期遇到resolve(),才会进入队列 视频教学 https://www.bilibili.com/video/BV12zsqeMEyt

传智杯 第六届—C

题目描述: 输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例如:第一个字符串是"They are students.",第二个字符串是”aeiou"。删除之后的第一个字符串变成"Thy r stdnts."。保证两个字符…

仿生水凝胶微纤维:从蜘蛛丝获得灵感,探索高性能纤维材料的新路径

大家好!今天咱们来了解一种水凝胶微纤维——《Bioinspired Mechanically Robust and Recyclable Hydrogel Microfibers Based on Hydrogen‐Bond Nanoclusters》发表于《Advanced Science》。研究人员从蜘蛛丝那儿获得灵感,想要做出既机械性能好&#xf…

Spring Cloud 配置中心详解:微服务动态读取与案例示范

在微服务架构中,每个微服务往往都有其独立的配置,这些配置可能会根据环境的不同(开发、测试、生产)进行调整和变化。Spring Cloud 配置中心提供了一种集中化管理和动态更新微服务配置的解决方案。在本文中,我们将详细介…

详细分析Spring Framework中 @ConditionalOnProperty的基本知识(附Demo)

目录 前言1. 基本知识2. Demo 前言 基本的Java知识推荐阅读: java框架 零基础从入门到精通的学习路线 附开源项目面经等(超全)【Java项目】实战CRUD的功能整理(持续更新) 从实战中学习启发 1. 基本知识 Conditiona…

一键将表格嵌入ppt作为附件!2个做ppt必知的技巧分享!

怎样把表格作为附件放入ppt? 众所周知,微软推出的Office套件包含了Powerpoint和Excel这两款软件,如果想在Powerpoint中插入表格,且表格数据量比较大,此时最好的呈现方式,是在Excel中来展示这些数据&#x…

msvcp120.dll无法继续执行代码的五个解决方法

在计算机系统中,MSVCP120.dll是一个至关重要的动态链接库文件,它是Microsoft Visual C Redistributable Package的一部分,对于许多基于Windows的应用程序运行至关重要。当系统提示“msvcp120dll丢失”时,意味着该文件可能由于误删…

清华毕业生去向引发的思考....

近日,清华最新发布的毕业生去向一经公布,便在社会上引起了广泛的关注和热议,许多人看完后都陷入了沉默。这一份去向报告,不仅仅是一组数据的呈现,更是对教育成果、社会需求以及个人发展等多方面问题的深刻映射。 一、数…

文件与目录的基本操作

前提:使用su root 切换到权限最大的root用户 1.显示当前工作目录的绝对路径(pwd) 用途:用于显示当前工作目录的绝对路径的命令。无论用户在文件系统的哪个位置,pwd 命令都能提供当前所在位置的完整路径信息。 用法&a…

现货白银交易技巧:向下突破回撤策略

有关现货白银交易的技巧一直是投资者关注的重点,投资者确实应该保持学习,这样才能跟得上市场,不会落后,下面我们就来介绍一个现货白银交易中的突破回撤的策略。 首先这个现货白银交易技巧判断的基础就是找到一波横盘趋势。所谓的突…

【C# 网络编程】基本概念

基本概念 OSI模型 背景: 为了统一和兼容不同计算机厂商的网络体系结构概念,国际标准化组织(ISO)在1979年提出了OSI参考模型(Open System Interconnection,) 结构 物理层(Physica…

java反序列化之CommonCollections6利⽤链的学习

一、源起 前文学习CC1链和URLDNS链的学习,同时学习过程中知道cc1受jdk版本的限制,故而进一步分析cc6链的利用过程,这个利用链不受jdk版本的限制,只要commons collections小于等于3.2.1,都存在这个漏洞。 ps&#xff1…

Flink 介绍(特性、概念、故障容错、运维部署、应用场景)

概述 特性 概念 数据流 状态 时间 savepoint 故障容错 运维部署 部署应用到任意地方 Flink能够更方便地升级、迁移、暂停、恢复应用服务 监控和控制应用服务 运行任意规模应用 应用场景 事件驱动型应用 什么是事件驱动型应用? 事件驱动型应用的优势 Flink如何…

对接外卖霸王餐api要遵循哪些步骤?

对接外卖霸王餐API接口的步骤通常包括以下几个关键环节: 选择服务提供商:根据需求、预算、服务内容、接口稳定性、覆盖范围(是否支持全国多个城市、是否支持主要外卖平台如美团和饿了么等)、技术支持等因素选择合适的霸王餐API服…

实现一个时钟

头文件 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include<QPainter>//画家类 #include<QTime>//时间类 #include<QTimer>//定时器类QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget …

vue3.5系列之响应式props解构的几点技巧对比

在最新的版本3.5x中&#xff0c;对props的能力也进行了加强。下面&#xff0c;我们具体看下有哪些变化&#xff0c;给我们带来的新的体验&#xff01; 体验一 3.5之前解构props的效果 // 子组件 <template><div><h1>响应式props</h1><p>{{ co…

【储能优化】使用优化的微电网能源管理系统 (EMS)

摘要 本文介绍了一种基于优化的微电网能源管理系统&#xff08;EMS&#xff09;&#xff0c;通过储能优化实现电网、光伏发电、以及储能设备之间的智能调度。系统旨在降低能源成本、减少碳排放&#xff0c;并提高能源利用效率。利用该EMS系统&#xff0c;电网用户能够在满足负…

使用docker、编写dockerfile、httpd镜像,并启动镜像,创建httpd主页和分页。(2)

1.准备一台机子&#xff0c;准备源&#xff0c;下载docker-ce vi /etc/yum.repo.d/Centos-7.repo 加入以下内容[base] nameCentOS-$releasever - Base - mirrors.aliyun.com failovermethodpriority baseurlhttp://mirrors.aliyun.com/centos/$releasever/os/$basearch/http:/…

Midjourney中文版:创意无限,艺术之旅由此启程

Midjourney中文版——一个将你的文字想象转化为视觉艺术的神奇平台。无需繁琐的绘画技巧&#xff0c;只需简单的文字描述&#xff0c;你就能开启一场前所未有的艺术之旅。 Midjourney AI超强绘画 (原生态系统&#xff09;用户端&#xff1a;Ai Loadinghttps://www.mjdiscord.c…

图纸加密软件有哪些?2024好用的10款图纸加密软件推荐!

在保护企业设计图纸和技术文档的安全性方面&#xff0c;选择合适的加密软件至关重要。2024年&#xff0c;有许多优秀的图纸加密软件可供选择。以下是我们推荐的10款图纸加密软件&#xff0c;助您有效保障重要文件的安全。 1. Ping32图纸加密软件 Ping32图纸加密软件 是一款专业…