Java_从入门到JavaEE_11

devtools/2024/9/23 0:26:29/

一、抽象类及抽象方法

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

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

  2. 实例:

    java">//抽象类
    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. 错误示范:

    java">Animal animal = new Animal();
    Dog dog = (Dog) animal;
    dog.eat();
    

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

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

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

http://www.ppmy.cn/devtools/42121.html

相关文章

从Django项目创建到图片上传的全方位指南

Django是什么 Django 是一个流行的 Python Web 开发框架,它提供了一系列工具和库,用于帮助开发人员构建高效、可扩展的 Web 应用程序。Django 的目标是让开发者能够以快速和简单的方式构建复杂的 Web 应用,通过提供许多预构建的组件和功能&a…

STM32快速入门(总线协议之I2C一主多从(软件实现 硬件实现))

STM32快速入门(总线协议之I2C一主多从(软件实现 & 硬件实现)) 前言 支持一对多(一主多从)、多对多传输(多主多从),只支持半双工,一般有两根数据线&…

c++ visualstudio2017 opencv debug源码 windows配置

源码下载和cmake opencv源码和opencv-contribue文件夹的层级目录 在opencv-4.4.0中新建build文件夹,并启动cmake-gui 配置如下,使用vs2017 x64, 需要注意contrib文件夹的设置,如下方蓝色所示,依次点击Configure和Generate 在bu…

等保测评实体分享three

四、简答题 1、网络安全的网络设备防护的内容是什么 答:(1)应对登录网络设备的用户进行身份鉴别; (2)应对网络设备管理员的登录地址进行限制; (3)网络设备用户的标识应…

Python的for循环

for循环 Python中的for循环是一种迭代循环,可以迭代容器中的每一个元素。 for循环结构 示例: users ["汤姆", "艾米", "李华"] for i in users:print(i) 其中i为临时变量,仅在循环中有效;users…

【讲解下PDM,PDM是什么?】

🎥博主:程序员不想YY啊 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家 🤗点赞🎈收藏⭐再看💫养成习惯 ✨希望本文对您有所裨益,如有不足之处,欢迎在评论区提出…

MySQL:什么样的字段适合加索引?什么样的字段不适合加索引

1 适合加索引的场景 (1)主键字段:用于唯一标识每个记录的字段,通常是数据库表中的一个自增或唯一标识字段。 (2)外键字段:用于连接两个表之间关系的字段,通常是一个表中的字段与另一个表中的主键字段关联。 (3)经常用于查询的字段:如果某个字段经常被用于查询条件…

vue3专栏项目 -- 五、权限管理(下)

1、创建Message组件 前面我们获取到了请求错误的信息,所以我们接下来做一个弹出框组件,让错误提示展示出来 我们把这个组件做成一个全局组件,它不仅可以显示错误的信息,还可以添加成功操作的信息,甚至还可以显示一个…