Java_从入门到JavaEE_11

一、抽象类及抽象方法

1.认识抽象类及抽象方法

  1. 应用场景:当一个方法必须在父类中出现,但是这个方法又不好实现,就把该方法变成抽象方法,交给非抽象的子类去实现

  2. 实例:

    //抽象类
    public abstract class 类名{//抽象方法public abstract void method();
    }
    
  3. 抽象方法交给非抽象的子类去实现(重写)

2.抽象类及抽象方法的深入

  1. 抽象类中可以有构造方法、静态方法、成员方法、抽象方法

  2. 抽象类中可以没有抽象方法,但是毫无意义

  3. 如果父类是抽象类,子类不一定实现父类的抽象方法,子类如果是抽象类,可以不实现父类的抽象方法

  4. 抽象类可以有构造方法

  5. 不能使用new关键字来创建抽象类对象,创建的是匿名内部类的对象

    如图:在这里插入图片描述

二、接口

1.认识接口

  1. 含义:特殊的抽象类
  2. 注意:
    1. JDK1.8以前,接口中只能有静态常量和抽象方法
    2. JDK1.8开始,接口中添加了静态方法和默认方法
  3. 作用:定制标准
  4. 抽象类与接口的区别
    1. 抽象类:成员变量、静态变量、静态常量、成员方法、静态方法
    2. 接口:静态常量、静态方法(JDK1.8)、默认方法(JDK1.8)

2.接口的深入

  1. 类 - 接口之间的关系:

    ​ 类 - 类 :单继承

    ​ 类 - 接口:多实现

    ​ 接口 - 接口:多继承

  2. 一个类可以实现多个接口

  3. 一个接口不可以实现多个接口,因为接口与接口的关系是多继承

  4. 接口里面的方法不一定都是抽象的,JDK1.8之前:接口中只能有静态常量和抽象方法,JDK1.8开始:接口中可以使用默认方法和静态方法

  5. 接口解决了类的单继承问题,因为类与类是单继承,类与接口是多实现

  6. 一个类可以继承一个类并同时实现多个接口

  7. 接口不可以new对象,接口是特殊的抽象类,但是本质还是抽象类,抽象类是不可以new对象的,接口也是不能new对象,new出来的匿名类内部类的对象

三、多态

1.类的多态

  1. 理解:子类对象指向父类引用(父类引用中存储的是子类对象在堆中开辟的地址)

  2. 需求:老师骑着自行车上班

    分析:老师类、自行车类

    需求迭代:自行车 -> 小汽车

    步骤:创建Car,继承Vehicles,重写open()、close()

  3. 设计原则:前人总结的经验,告诉我们什么不该做

    设计模式:前人总结的经验,告诉我们具体怎么做

  4. OCP原则:

    ​ O - Open - 在需求升级时,对于创建类是欢迎的

    ​ (因为创建类对于原来代码的影响几乎为0)

    ​ C - Close - 在需求升级时,对于改动原有类是拒绝的

    ​ (因为原有类之间的关系是趋于稳定状态,如果改动原有类,

    ​ 很有可能打破这种平衡,导致bug的出现)

    ​ P - Principle - 原则

2.接口的多态

  1. 理解:实现类对象指向接口的引用(接口的引用中存储的是实现类对象在堆中开辟的地址)

  2. 需求:模拟电脑连接外部设备

    分析:

    ​ 接口 – IUSB

    ​ 鼠标 – 实现IUSB

    ​ 硬盘 – 实现IUSB

    ​ 电脑 – 连接IUSB接口

四、对象转型

引用数据类型的转型

  1. 向上转型(自动转型):子类类型 转 父类类型
  2. 向下转型(强制转型):父类类型 转 子类类型

1.向上转型

  1. 向上转型后,可以调用父类非私有化的成员属性
  2. 向上转型后,可以调用父类非私有化的成员方法
  3. 向上转型后,不可以调用子类的成员属性和成员方法
  4. 向上转型后,可以调用子类重写父类的方法
  5. 注意:向上转型就是多态
  6. 多态的优缺点:
    1. 优点:需求升级时不违反OCP原则
    2. 缺点:不可以调用子类独有的成员属性和成员方法

2.向下转型

  1. 注意:向下转型是有风险的

  2. 错误示范:

    Animal animal = new Animal();
    Dog dog = (Dog) animal;
    dog.eat();
    

    会报:ClassCastException - 类型转型异常
    原因:父类类型不能直接转换为子类类型

  3. 经验:向下转型之前,必须向上转型

    Animal animal = new Dog();if(animal instanceof Dog){//判断引用animal中所指向的对象是否是Dog类型Dog dog = (Dog) animal;dog.eat();
    

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

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

相关文章

element-ui table sortable排序 掉后端接口方式

实例: 官方解释:如果需要后端排序,需将sortable设置为custom,同时在 Table 上监听sort-change事件,在事件回调中可以获取当前排序的字段名和排序顺序,从而向接口请求排序后的表格数据。 1.table上要加 sort-change"sortCha…

鸿蒙OpenHarmony开发板:【子系统配置规则】

子系统 子系统配置规则 通过build仓下的subsystem_config.json可以查看所有子系统的配置规则。 {"arkui": {"path": "foundation/arkui", # 路径"name": "arkui" # 子系统名},"ai": {&q…

【Keil程序大小】Keil编译结果Code-RO-RW-ZI分析

【Keil程序大小】Keil编译结果Code-RO-RW-ZI分析 下图为keil编译后的结果: 单位为Byte。Code是程序大小。RO是常量大小。RW是读写变量占用大小,如已初始化的静态变量和全局变量。ZI是全零变量占用大小,如未初始化的static修饰的静态变量、全局…

项目管理-项目绩效域2/2

项目管理:每天进步一点点~ 活到老,学到老 ヾ(◍∇◍)ノ゙ 何时学习都不晚,加油 八大绩效域包括:“团干部 策划开公交” 团队、干系人、不确定性、测试、规划、开发方法与生命周期、项目工作、交付。 上节…

在全志H616核桃派1B开发板Python进行GPIO按键功能实现

前言​ 按键是最简单也最常见的输入设备,很多产品都离不开按键,包括早期的iPhone,今天我们就来学习一下如何使用Python来编写按键程序。有了按键输入功能,我们就可以做很多好玩的东西了。 实验目的​ 编程实现按键输入检测。 …

Python从0到POC编写--SQL注入

SQL注入POC编写。 环境: win10 ,phpStudy ,python3.7 ,sqli-labs 虚拟域名: www.sql.com 简单的POC: 说起来也简单, 就是请求–>响应, 然后再判断返回信息是否存在注入。 本…

linux虚拟机配置环境

1.配置虚拟机 在VMware中安装CentOS7(超详细的图文教程)_在vmware上安装centos-CSDN博客https://blog.csdn.net/qq_45743985/article/details/121152504 2.固定虚拟机ip地址 Vmware虚拟机Linux配置固定IP地址(详细版)_虚拟机固…

华为数据之道第四部分导读

目录 导读 第四部分 第10章 未来已来:数据成为企业核心竞争力 数据:新的生产要素 数据被列为生产要素:制度层面的肯定 数据将进入企业的资产负债表 数据资产的价值由市场决定 大规模数据交互的企业数据生态 数据生态离不开底层技术的…

OpenHarmony 4.0 实战开发——分布式软总线解析:设备发现与传输

OpenHarmony 的分布式软总线子系统为 OpenHarmony 系统提供的通信相关的能力,包括:WLAN 服务能力、蓝牙服务能力、软总线、进程间通信 RPC(Remote Procedure Call)等通信能力。 其中主要包括: WLAN 服务:…

使用unplugin-icons报错:Icon `eos-icons/ai` not found

代码: import IconNanobert from ~icons/eos-icons/ai 报错: Icon eos-icons/ai not found解决办法: npm i -D iconify-json/eos-icons (把eos-icons替换成报错的那个collection-id即可,collection-id名称见图2&…

CTF-reverse,逆向分析,对“左移4或右移4,即(x<<4) | (x >>4)的加密探讨

博主在刷题过程中遇上这样一个有意思的加密(如下图),苦苦思索其逆向运算,被硬控了很久,也没搜到什么资料来解释这个问题(也许是太简单??蒟蒻博主怀疑人生……) 经过博主不…

[C++]哈希应用-布隆过滤器快速入门

布隆过滤器 布隆过滤器(Bloom Filter)是一个由布隆在1970年提出的概率型数据结构,它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器的主要特点是高效的插入和查询,可以用于检索一个元素是否在一个集合中。 原理…

Springboot整合飞书向群组/指定个人发送消息/飞书登录

Springboot整合飞书向群组发送消息 飞书开放平台创建企业自建应用 添加应用能力-机器人 创建完成后,进入应用详情页,可以在首页看到 App Id 和 App Secret 在飞书pc端创建一群机器人 此处可以拿到该机器人的webhook地址,通过https的方式,也可以调用发送…

JavaEE企业级开发中常用的JDK7和JDK8的时间类

JDK7时间类 全世界的时间有一个统一的计算标准 在同一条经线上的时间是一样的 格林威治时间 简称GMT 计算核心 地球自转一天是24小时 太阳直射正好是12小时 但是误差太大 现在用原子钟来代替 用铯原子震动的频率来计算时间,作为世界的标准时间UTC 中国标准时间…

Spring-依赖注入的处理过程

前置知识 1 入口 DefaultListableBeanFactory#resolveDependency 2 每个依赖都有对应的DependencyDescriptor 3 自定绑定候选对象处理器AutowireCapableBeanFactory 注入处理 我们可以看到AutowireCapableBeanFactory中有两个方法: 第一个是单个注入:…

2024蓝桥杯CTF writeUP--cc

给了个网页,里面有加密算法,密钥,密文 使用在线解码工具 CTF最全在线工具整理_在线ctf工具-CSDN博客 将输出的密文,密钥,vi,加密方式一一对应

谈谈IP地址

IP地址 IP地址概念动态分配 IP(DHCP)NAT机制(网络转换机制)IPv6 IP地址组成特殊的IP地址 IP地址 IP协议报文结构: 概念 IP地址: 描述了主机的具体位置.有32位,利用点分十进制的方式来表示.例如: 192.168.190.77 32位ip地址表示的数据非常有限,42亿九千万…, 那么ip地址不够用…

学QT的第三天~

ikun登录界面完善 #include "mywidget.h" void MyWidget::bth1() { if(edit3 ->text()"520cxk"&&edit4 ->text()"1314520") { //1.实例化一个QmessageBox类的对象 QMessageBox box(QMessageBox::Information, //图标 "恭喜…

数据结构与算法(5)队列的基本操作

#include<stdio.h> #include<stdlib.h> #include<stdbool.h> typedef int ElemType; #define MaxSize 10//队列的定义 typedef struct SqQueue {ElemType data[MaxSize];int front, rear;//front为头指针&#xff0c;rear为尾指针。这里并不是真正的“指针”…

嵌入式数据库SQLite 3配置使用详细笔记教程

0、惨痛教训 随着管理开发的项目体积越来越庞大&#xff0c;产品系统涉及的数据量也越来越多&#xff0c;并且伴随着项目不久就要交付给甲方了。如果项目的数据信息没有被妥善管理&#xff0c;后期设备的运行状态、操作状况等数据流信息不能被溯源&#xff0c;当出现了一些特殊…