dedecms网站导航点击过后改变成其他背景是怎么实现的/亚马逊关键词排名查询工具

dedecms网站导航点击过后改变成其他背景是怎么实现的,亚马逊关键词排名查询工具,网站建设评语,公司网站横幅是做的吗面向对象编程(OOP)的三大核心特征为封装、继承、多态,其中多态是最具灵活性和扩展性的特性。本文将从多态的本质出发,结合final关键字、抽象类与接口的设计,深入探讨这些概念的应用场景及其在代码中的实现细节&#xf…

面向对象编程(OOP)的三大核心特征为封装、继承、多态,其中多态是最具灵活性和扩展性的特性。本文将从多态的本质出发,结合final关键字、抽象类与接口的设计,深入探讨这些概念的应用场景及其在代码中的实现细节,帮助读者构建更健壮、可维护的Java程序。

一、多态:灵活性的基石

1. 多态的本质

多态是指同一行为在不同对象下具有不同的表现形式。其实现依赖于继承或接口实现,具体表现为:

  • 对象多态:父类引用指向子类对象(如 People p = new Student())。

  • 行为多态:子类重写父类方法后,调用同一方法时执行不同的逻辑。

代码示例:(纯语法,无意义)

class Animal {public void cry() {System.out.println("动物叫");}
}class Dog extends Animal {@Overridepublic void cry() {System.out.println("汪汪汪");}
}class Cat extends Animal {@Overridepublic void cry() {System.out.println("喵喵喵");}
}// 多态调用
Animal animal1 = new Dog();
Animal animal2 = new Cat();
animal1.cry(); // 输出:汪汪汪
animal2.cry(); // 输出:喵喵喵

2. 多态的优势与问题

优势

  • 解耦与扩展性:通过父类类型接收子类对象,新增子类时无需修改原有代码。

  • 统一接口:定义方法时使用父类形参,可兼容所有子类对象。

问题与解决方案
多态下无法直接调用子类独有的方法。需通过类型转换解决:

常量的定义

  • 自动类型转换:子类对象赋值给父类变量(向上转型)。

  • 强制类型转换:父类变量转换为子类类型(向下转型),需结合instanceof检查类型以避免ClassCastException

    if (animal1 instanceof Dog) {Dog dog = (Dog) animal1;dog.bark(); // 调用子类独有方法
    }

    二、final关键字:不可变性的守护者

    final关键字用于修饰类、方法和变量,强制约束其不可变性:

  • 修饰类:类不可被继承(如String类)。

  • 修饰方法:方法不可被重写(如Object类中的getClass())。

  • 修饰变量:变量仅能赋值一次。

    • 基本类型:值不可变(如final int x = 10)。

    • 引用类型:引用地址不可变,但对象内部状态可变(如final List<String> list = new ArrayList<>())。

public class Constants {public static final String SCHOOL_NAME = "jl教育";
}

三、抽象类:模板化设计的利器

1. 抽象类的定义与特点

  • 使用abstract修饰,可包含抽象方法(无方法体)和具体方法。

  • 不能实例化,需子类继承并实现所有抽象方法。

示例

public abstract class Animal {private String name;public abstract void cry(); // 抽象方法public String getName() {return name;}
}

2. 模板方法设计模式

抽象类的经典应用场景,解决代码重复问题:

  • 模板方法:定义通用流程(用final修饰防止子类覆盖)。

  • 抽象方法:子类实现差异化逻辑。

代码示例

public abstract class DataProcessor {// 模板方法(final修饰)public final void process() {readData();processData();saveData();}protected abstract void processData(); // 子类实现
}

四、接口:多继承的救星

1. 接口的核心特性

  • 使用interface定义,支持多实现(类可同时实现多个接口)。

  • JDK 8后新增默认方法静态方法私有方法,增强扩展能力。

示例

public interface Flyable {void fly(); // 抽象方法default void land() { // 默认方法System.out.println("正在降落");}static void showInfo() { // 静态方法System.out.println("飞行器接口");}
}

2. 接口与抽象类的区别

特性抽象类接口
多继承不支持支持多实现
方法实现可包含具体方法JDK8前仅抽象方法
设计目的定义模板

定义行为契约

五、实践中的应用场景

  1. 多态:结合工厂模式,动态创建对象。

  2. 抽象类:定义通用算法骨架(如JUnit的TestCase)。

  3. 接口:实现策略模式,灵活切换业务逻辑。

六、总结

  • 多态通过动态绑定提升代码灵活性,但需谨慎处理类型转换。

  • final通过约束不可变性增强代码安全性。

  • 抽象类接口分别侧重代码复用与行为定义,二者结合可构建高扩展架构。

掌握这些核心概念,能够显著提升代码的可维护性和可扩展性,为复杂系统设计奠定坚实基础。

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

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

相关文章

CTF WEB题

[文件包含,少许难度] 地址:攻防世界 代码审计WRONG WAY! <?php include("flag.php"); #包含了一个“flag.php”文件 highlight_file(__FILE__); #来显示当前文件的源代码 if(isset($_GET["file1"]) && isset($_GET["file2"])) #isse…

c++图论(一)之图论的起源和图的概念

C 图论之图论的起源和图的概念 图论&#xff08;Graph Theory&#xff09;是数学和计算机科学中的一个重要分支&#xff0c;其起源可以追溯到 18 世纪 的经典问题。以下是图论的历史背景、核心起源问题及其与基本概念和用途&#xff1a; 借用一下CSDN的图片哈 一、图论的起源&…

Ollama + CherryStudio:构建本地私有知识库

前面我们介绍了Ollama的安装和使用&#xff0c;并通过Open-WebUI进行调用&#xff0c;相信大家对Ollama也有了一定的了解&#xff1b;这篇博文就结合Ollama工具和CherryStudio工具构建一个本地知识库&#xff08;RAG&#xff09;&#xff1b;在进行接下来的操作之前&#xff0c…

【实战ES】实战 Elasticsearch:快速上手与深度实践-8.2.1AWS OpenSearch无服务器方案

&#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 文章大纲 8.2.1AWS OpenSearch 无服务器方案深度解析与实践指南1. Serverless架构的核心价值与行业趋势1.1 传统Elasticsearch集群的运维挑战1.2 Serverless技术演进路线技术特性对比…

图搜索的两种写法,广度优先和深度优先

最近AI的爆发大家都疯了&#xff0c;也确实够疯&#xff0c;前几年谁能天天和AI聊天呢&#xff0c;特别它越来越智能&#xff0c;越来越理解你&#xff0c;你越来越离不开它&#xff0c;我很好奇将来它会不会有情绪&#xff0c;太可怕了&#xff0c;一旦有了这个就有了感情&…

嵌入式八股RTOS与Linux---前言篇

前言 Linux与RTOS是校招八股的时候很喜欢考察的知识,在这里并没有把两个操作系统完全的独立开去讲,放在一起对比或许可能加深印象。我们讲Linux的内核有五部分组成:进程调度、内存管理、文件系统、网络接口、进程间通信,所以我也将从这五方面出发 中断管理去对比和RTOS的不同。…

基于Vue实现Echarts的平滑曲线

在Vue2.x的项目中使用echarts实现如下效果 安装echarts npm install echarts --save组件引入echarts // 在你的Vue组件中 import * as echarts from echarts;在模板中添加一个div元素&#xff0c;用来放置图表 <divref"chart"class"chart"style"…

Java 集合框架中 `List` 接口及其子类的详细介绍,并用 UML 图表展示层次结构关系,用表格对比各个类的差异。

下面是 Java 集合框架中 List 接口及其子类的详细介绍&#xff0c;并用 UML 图表展示层次结构关系。最后&#xff0c;我会用表格对比各个类的差异。 Java 集合框架中 List 接口及其子类 UML 类图描述 以下是 List 接口及其子类的 UML 类图描述&#xff0c;不包含方法。 详细…

Java面试八股—Redis篇

一、Redis的使用场景 &#xff08;一&#xff09;缓存 1.Redis使用场景缓存 场景&#xff1a;缓存热点数据&#xff08;如用户信息、商品详情&#xff09;&#xff0c;减少数据库访问压力&#xff0c;提升响应速度。 2.缓存穿透 正常的访问是&#xff1a;根据ID查询文章&…

【GPT入门】第22课 langchain LCEL介绍

【GPT入门】第22课 langchain LCEL介绍 1. LCEL介绍与特点2. 原生API与LCEL的对比2. 简单demo 1. LCEL介绍与特点 LCEL 即 LangChain Expression Language&#xff0c;是 LangChain 推出的一种声明式语言&#xff0c;用于简化和优化在 LangChain 框架内构建复杂链和应用的过程…

数据结构——单链表list

前言&#xff1a;大家好&#x1f60d;&#xff0c;本文主要介绍数据结构——单链表 目录 一、单链表 二、使用步骤 1.结构体定义 2.初始化 3.插入 3.1 头插 3.2 尾插 3.3 按位置插 四.删除 4.1头删 4.2 尾删 4.3 按位置删 4.4按值删 五 统计有效值个数 六 销毁…

堆排序:力扣215.数组中的第K个大元素

一、问题描述 在一个整数数组 nums 中&#xff0c;需要找出第 k 个最大的元素。这里要注意&#xff0c;我们要找的是数组排序后的第 k 个最大元素&#xff0c;而不是第 k 个不同的元素。例如&#xff0c;对于数组 [3,2,1,5,6,4]&#xff0c;当 k 2 时&#xff0c;第 2 个最大…

C语言(25)

一.数据在内存中的存储 1.整数在内存中的存储 整数在内存中以二进制的形式储存&#xff0c;分别为原码&#xff0c;补码&#xff0c;反码 有符号的整数&#xff0c;在上述三种形式都有符号位和数值位两个部分&#xff0c;符号位为0是正数&#xff0c;1是负数&#xff0c;最高…

鸿蒙开发-一多开发之媒体查询功能

在HarmonyOS中&#xff0c;使用ArkTS语法实现响应式布局的媒体查询是一个强大的功能&#xff0c;它允许开发者根据不同的设备特征&#xff08;如屏幕尺寸、屏幕方向等&#xff09;动态地调整UI布局和样式。以下是一个使用媒体查询实现响应式布局的实例&#xff1a; 1. 导入必要…

Docker运行hello-world镜像失败或超时:Unable to find image ‘hello-world:latest‘ locally Trying to pull reposi

Docker运行hello-world镜像失败或超时&#xff0c;报错&#xff1a;Unable to find image ‘hello-world:latest’ locally Trying to pull repository docker.io/library/hello-world … /usr/bin/docker-current: missing signature key. See ‘/usr/bin/docker-current run …

MySQL连接较慢原因分析及解决措施

文章目录 整体说明一、问题现象二、问题分析2.1、DNS反向解析问题2.2、网络问题2.3、SSL/TLS协商问题2.4、自动补全的延迟 三、问题解决 摘要&#xff1a; MySQL连接较慢原因分析及解决措施 关键词&#xff1a; MySQL、连接缓慢、客户端、参数设置 整体说明 在使用MySQL的时候…

C++之文字修仙小游戏

1 效果 1.1 截图 游戏运行&#xff1a; 存档&#xff1a; 1.2 游玩警告 注意&#xff01;不要修改装备概率&#xff0c;装备的概率都是凑好的数字。如果想要速升&#xff0c;修改灵石数量 2 代码 2.1 代码大纲 1. 游戏框架与初始化 控制台操作&#xff1a;通过 gotoxy() …

Docker安装部署RabbitMQ

Docker安装部署RabbitMQ 本文介绍了如何在Linux&#xff08;CentOS 7&#xff09;系统环境下的Docker上安装部署RabbitMQ的详细过程。 目录 Docker安装部署RabbitMQ一、环境准备1.Linux环境2.Docker3.停止并移除现有的 RabbitMQ 镜像和容器 二、安装部署RabbitMQ1.拉取 RabbitM…

线性代数(1)用 excel 计算鸡兔同笼

线性代数excel计算鸡兔同笼 案例&#xff1a;鸡兔同笼问题的三种解法&#xff08;递进式教学&#xff09;一、问题描述二、方程式解法&#xff08;基础版&#xff09;步骤解析 三、线性代数解法&#xff08;进阶版&#xff09;1. 方程组转化为矩阵形式2. 矩阵求解&#xff08;逆…

【网络】简单的 Web 服务器架构解析,包含多个服务和反向代理的配置,及非反向代理配置

这张图片描述了一个简单的 Web 服务器架构&#xff0c;包含多个服务和反向代理的配置。以下是对每个部分的详细解释&#xff0c;帮助你理解其中的技术内容&#xff1a; 1. Web Server: ifn666.com 这是你的主域名&#xff08;ifn666.com&#xff09;&#xff0c;所有服务都通过…