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.rhkb.cn/news/322641.html

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

相关文章

5月将有17款游戏发布,腾讯的《地下城与勇士:起源》备受关注

易采游戏网5月8日消息,本月将有17款新游戏预计上线,其中14款已正式定档,游戏市场即将迎来一场盛大的狂欢。在众多备受期待的游戏中,有两款游戏尤其引人注目,它们分别是来自库洛和腾讯的《地下城与勇士:起源…

学习方法的重要性

原贴:https://www.cnblogs.com/feily/p/13999204.html 原贴:https://36kr.com/p/1236733055209095 1、 “一万小时定律”的正确和误区 正确: 天才和大师的非凡,不是真的天资超人一等,而是付出了持续不断的努力&…

武汉星起航:成功挂牌上股交,优势尽显启新程,共绘创业投资梦

在金秋十月的尾声,武汉星起航电子商务有限公司迎来了一个重要的历史时刻——于2023年10月30日在上海股权托管交易中心成功挂牌展示,正式登陆资本市场。这一里程碑式的跨越,不仅标志着武汉星起航在跨境电商领域的卓越实力,更彰显了…

MAC地址冲突案例

1、问题描述:WiFi-A网段做了策略路由,引流到另一台设备,连接WiFi-A后通过DHCP获取到了地址却无法上网,此时排查思路是什么? (1)、排查方法: 看到网关通信是否正常 第一次获取地址正…

mysql中varchar与bigint直接比较会导致精度丢失以至于匹配到多行数据

在mysql中,我们都知道如果一个索引字段使用了函数或者计算那么查询的时候索引会失效,可是我相信在联表的时候我们只会关注两个表关联字段是否都创建了索引,却没有关注过这两个字段的类型是否一致,如果不一致的话索引是会失效的&am…

Windows系统完全卸载删除 Node.js (包含控制面板找不到node.js选项情况)

1.打开cmd命令行窗口,输入npm cache clean --force 回车执行 2.打开控制面板,在控制面板中把Node.js卸载 移除之后检查环境变量是否也移除:点击Path,点击编辑。 把环境变量中和node有关的全部移除,然后点击确定。 3.重…

WPF之创建无外观控件

1,定义无外观控件。 定义默认样式,在其静态构造函数中调用DefaultStyleKeyProperty.OverrideMetadata()。 //设置默认样式DefaultStyleKeyProperty.OverrideMetadata(typeof(ColorPicker), new FrameworkPropertyMetadata(typeof(ColorPicker))); 在项目…

Android C++ 开发调试 LLDB 工具的使用

文章目录 调试环境准备基础命令Breakpoint CommandsWatchpoint CommandsExamining VariablesEvaluating ExpressionsExamining Thread StateExecutable and Shared Library Query Commands 参考: Android 中在进行 NDK 开发的时候,我们经常需要进行 C 代…

为什么互联网行业这两年突然就不行了?

前言: 本人正好最近十年基本都是在互联网行业,真正算是经历了行业的起伏波澜,火的时候被烤的滚烫,冷的时候被冻得冰凉,都算是切身感受到了。 首先,互联网行业的“行”与“不行”,还是一个相对…

短剧新纪元:引领潮流的短剧小程序开发,一触即达精彩世界

在信息爆炸的时代,短视频以其短小精悍、内容丰富的特点迅速崛起,成为人们日常生活中不可或缺的一部分。然而,短视频的短暂与碎片化,有时难以满足观众对完整故事的需求。为此,我们倾力打造了一款短剧小程序,…

如何修复连接失败出现的错误651?这里提供修复方法

错误651消息在Windows 7到Windows 11上很常见,通常会出现在一个小的弹出窗口中。实际文本略有不同,具体取决于连接问题的原因,但始终包括文本“错误651”。 虽然很烦人,但错误651是一个相对较小的问题,不应该导致计算…

AI图书推荐:ChatGPT在真实商业世界中的应用

《ChatGPT在真实商业世界中的应用》 (Unleashing The Power of ChatGPT: A Real World Business Applications)首先概述了ChatGPT及其在对话式人工智能领域的影响。接着,你将深入了解ChatGPT的技术方面,理解机器学习算法和自然语言处理如何在后台工作。然…

Android进阶之路 - 静态会员进度条

年后这个新版本加入了VIP模块,有幸正好由我来负责,可以再积累一下这方面的知识。 那段时间看了一本书,书中说到初级码农的特性之一就是完全集中于某些功能,忽略了了很多成长机会,所以重复性劳作带来的成长值有限&#…

【YOLO】目标检测 YOLO框架之train.py参数含义及配置总结手册(全)

1.一直以来想写下基于YOLO开源框架的系列文章,该框架也是日常项目开发中常用的一款工具,最近刚好挤时间梳理、总结下这块儿的知识体系。 2.熟悉、梳理、总结下YOLO目标检测相关知识体系,之前实战配置时总是临时性检索些注释含义,但…

spring模块(六)spring监听器(2)@EventListener

一、介绍 监听器的简化写法 二、原理 三、使用 Slf4j Component public class MyTask {EventListenerpublic void onApplicationEvent(ApplicationEvent event) {if (event instanceof ContextRefreshedEvent) {log.info("监听到 ContextRefreshedEvent...");}if…

水电抄表方案是什么?

1.概述:水电抄表方案的重要性 水电抄表方案是现代城市管理中不可或缺的一部分,它涉及到了能源管理、费用结算和公共服务等多个领域。传统的抄表方式需要工作人员上门服务,费时费力且效率低下。随着科技的发展,智能化的水电抄表方…

融知财经:期货交易原理是怎样的?期货交易有哪些特征?

期货的原理是基于对某期货品种未来走势的判断而形成对其合约的买卖交易,因此期货可以解释为买涨或买跌。买涨,即看多交易,预期某期货品种未来价格上涨而进行的买入开仓交易;买跌,即看空交易,预期某期货品种…

Java学习第05天-编程思维与编程能力

文章目录 综合应用案例:找素数数组元素的复制数字加密模拟双色球 综合应用 涉及的知识点: 变量、数组运算符:基本运算符、关系运算符、逻辑运算符流程控制:if、switch、for、while、死循环、循环嵌套跳转关键字:break、…

Ps 滤镜:像素化

Ps菜单:滤镜/像素化 Filter/Pixelate “像素化”子菜单中的滤镜可以将图像以其他形状的元素重新再现出来。它并不是真正地改变了图像像素点的形状,它只是在图像中表现出某种基础形状的特征,以形成一些类似像素化的形状变化。 彩块化 Facet “…

17.接口自动化学习-日志

1.日志输出渠道 &#xff08;1&#xff09;文件格式 xx.log &#xff08;2&#xff09;控制台输出 2.日志级别 debug<info<warnning<error<critical 3.代码实现 from utils.handle_path import log_path import logging import datetime def logger(fileLogTr…