面向对象:是一种编程思想,面向过程是关注实现的步骤,每个步骤定义一个函数,调用函数执行即可。面向对象关注的是谁来执行,把具有相同属性和行为的一类事物进行抽象成类,然后再通过实例化出一个个具体的对象,使用的具体的对象。

类包含

成员变量(属性)名词

成员方法(行为)动词

构造方法(用来为刚创建的对象的成员进行初始化赋值)

面向对象特征:

封装:

     误区:把封装理解成包装了

      使用访问权限修饰符把类中的某些属性隐藏起来(private),使外界无法随意访问,只能通过公共方法进行访问,增强了安全性。

 

继承

    子继承父类

       可以继承父类中成员(功能),提高代码的复用性

       子类可以对父类方法进行重写

多态

     同一个事物,在不同时刻表示不同的状态

      父类的引用子类的对象

多态提高程序设计的扩展性(在新增功能的时候,只添加新类,尽可能少的修改原来的代码),满足开闭原则,对修改关闭。

接口和抽象类

抽象类:被abstract修饰的类

       一个不完整的类(里面包含抽象方法)就可以定义抽象类,一般在类体系结构的顶层类,大多是抽象类。

抽象类特点:

        不能实例化对象

        其它功能和正常类一样

接口

     接口可以理解为是一种特殊的抽象

      接口重点在于定义功能(抽象方法),不能定义成员变量,即使定义也只能定义静态常量

     接口同样不能被实例化对象,由子类实现,重写其中的抽象方法。

什么时候用抽象类,什么是用接口?

当还需要定义成员变量,构造方法,具体方法时,应该使用抽象类

当只定义功能时,使用接口

单一职责

一个类只负责一件事情。

开闭原则

开闭原则即对修改关闭,对扩展开发在新增功能时,通过扩展一类来实现功能,尽量少的修改之前的代码

接口隔离

把接口粒度更小,把同一类的功能定义到一个接口中,不要把所有的功能定义在一个接口中,这样实现类会继承一些不需要的功能过来

依赖倒置原则

编程实现不应该依赖于底层实现,而是应该依赖于上层的抽象,

先根据实际情况进行分析,设计出接口/抽象类,在抽象层中定义好功能,底层实现根据上层的定义来具体实现即可。

组合聚合复用原则

如果在B类中需要复用A类中的某些方法,除了让B类继承A类外,还可以在B类中关联A类,在B类中依赖A类,只是为了复用某几个方法,使用集成的代价要高一些

里氏替换原则

在使用继承时,在使用父类时,如果将其换成子类,也要保证功能不会受影响。

当子类继承父类后,重写了父类中的方法父类定义为,这时如果把父类替换成子类,那么会影响父类原来的功能

如何避免:如果子类需要重写父类的方法,那么将父类定义为抽象类。

迪米特原则

只跟朋友说话,不和“陌生人说话”

单例模式

单例模式解决一个类在一个项目中只能创建一个对象。

1.单例对象只能有单例类自己创建

饿汉模式:

好处:不存在线程安全问题

不好;启动时创建对象,启动时间会变长

懒汉模式:

package com.ffyc.javapro.thread.fx;public class DCLSingleton {private static volatile DCLSingleton instance; // volatile 保证可见性://确保一个线程修改 instance后,其他线程立即可见最新值// 禁止指令重拍序://new Singleton()的步骤(分配内存→初始化对象→赋值引用)可能被重排序为(分配内存→赋值引用→初始化对象)// 若未初始化完成时其他线程访问 instance,会得到未完全构造的对象private DCLSingleton() {}public static DCLSingleton getInstance() {if (instance == null) {                    // 第一次检查synchronized (DCLSingleton.class) {     // 加锁if (instance == null) {            // 第二次检查instance = new DCLSingleton();}}}return instance;}
}

工厂模式

工程模式解决如何大量创建对象

工厂方法:

为每一个具体的产品提供一个专门的工厂,专门负责生产这一具体产品

满足了开闭原则,增加了一个产品,就增加了一个具体产品的生产工厂

 

 

      

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

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

相关文章

Hyperledger Fabric深入解读:企业级区块链的架构、应用与未来

一、引言:企业级区块链的标杆Hyperledger Fabric是Linux基金会主导的开源项目,专为企业级应用设计,以模块化架构、许可链机制和隐私保护为核心,广泛应用于金融、供应链、医疗等领域。相较于公有链(如以太坊&#xff09…

从0开始学习R语言--Day45--Hausman检验

当我们在探究数据本身是否和变量相关时,往往都会对这两者进行回归分析,控制一下变量来看看趋势走向。但其实在分析前,我们可以先尝试做Hausman检验,这可以帮助我们判断数据的变化到底是因为变量不一样了还是因为自己的个体效应所以…

闲庭信步使用图像验证平台加速FPGA的开发:第九课——图像插值的FPGA实现

(本系列只需要modelsim即可完成数字图像的处理,每个工程都搭建了全自动化的仿真环境,只需要双击top_tb.bat文件就可以完成整个的仿真,大大降低了初学者的门槛!!!!如需要该系列的工程…

Android事件分发机制完整总结

一、核心概念事件分发的本质Android事件分发采用责任链模式,事件从Activity开始,依次经过ViewGroup和View。整个机制只有一个入口:dispatchTouchEvent方法。onInterceptTouchEvent和onTouchEvent都不是独立的事件入口,而是被dispa…

【论文阅读】AdaReasoner: Adaptive Reasoning Enables More Flexible Thinking

AdaReasoner: Adaptive Reasoning Enables More Flexible Thinking3. AdaReasoner3.1 动机3.2 问题定义3.3 动作选择过程3.3.1 动作空间定义3.3.2 动作选择3.4 探索策略3.5 强化学习训练3.5.1 训练算法3.5.2 目标函数3.5.3 损失函数AdaReasoner: Adaptive Reasoning Enables Mo…

深入了解Modbus TCP:工业通信的“通用语言”

目录 简介一、Modbus TCP的“前世今生”二、Modbus TCP的核心特点三、Modbus TCP的工作原理1. 报文结构2. 功能码四、Modbus TCP的应用场景五、使用Modbus TCP的注意事项六、总结简介 在工业自动化的世界里,不同设备之间的“对话”至关重要。从PLC(可编程逻辑控制器)到传感…

基于Selenium和FFmpeg的全平台短视频自动化发布系统

一、项目背景与概述在当今短视频营销盛行的时代,许多企业和个人需要同时管理多个短视频平台账号。手动上传视频到抖音、快手、小红书等平台不仅效率低下,而且容易出错。本文将介绍一个基于Python的自动化短视频处理与发布系统,它能够&#xf…

技术演进中的开发沉思-31 MFC系列:类层次结构

提及MFC,不得不说他的类层次。如果把 MFC 框架比作是座精密的钟表,那类层次结构便是其内部咬合的齿轮组。每个类都有明确的 “家族地位”,既继承着先辈的本领,又发展出独特的专长。这种层级分明的设计,让 Windows 编程…

2023.05.06 更新前端面试问题总结(12道题)

2023.05.04 - 2023.05.06 更新前端面试问题总结(12道题) 获取更多面试相关问题可以访问 github 地址: https://github.com/pro-collection/interview-question/issues gitee 地址: https://gitee.com/yanleweb/interview-question/issues 目录&#xff1…

【网络】Linux 内核优化实战 - net.ipv4.tcp_keepalive_intvl

目录1. TCP Keep-Alive 机制回顾2. 参数作用3. 参数取值与影响4. 使用场景与建议5. 相关参数6. 如何配置该参数临时生效(重启后失效):永久生效(需重启或重载配置):7. 性能优化建议8. 监控与故障排查net.ipv…

20250710解决KickPi的K7的SDK编译异常:rk3576-android14.0-25250704.tar.gz【降低BUILD_JOBS】

20250710解决KickPi的K7的SDK编译异常:rk3576-android14.0-25250704.tar.gz【降低BUILD_JOBS】 2025/7/10 20:59缘起:KickPi的K7的SDK编译异常:rk3576-android14.0-25250704.tar.gzZ:\14TB\SDK\rk3576_data\1-SDK软件源码\Android14\20250704…

《Java EE与中间件》实验一 基于MyBatis的留言本

目 录 一、实验目的和要求 1、实验目的 2、实验要求 二、实验实现思路及步骤 1、实验思路 2、实验步骤 3、实验方案 三、主要开发工具 四、实验效果及实现代码 1、留言本数据库构建实现 (1)建立javaee-project数据库 (2&#xf…

ARM汇编编程(AArch64架构) - 第14课:安全扩展(ARM TrustZone)

目录1. TrustZone基础概念1.1 安全扩展架构1.2 关键组件2. 世界切换机制2.1 状态切换流程2.2 关键寄存器配置3. SMC调用实现3.1 调用规范3.2 完整调用流程4. 实战练习4.1 实验:实现双世界通信4.2 调试技巧1. TrustZone基础概念 1.1 安全扩展架构 startuml rectang…

OpenCV哈希算法------Marr-Hildreth 边缘检测哈希算法

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 该类实现了 Marr-Hildreth 边缘检测哈希算法(Marr-Hildreth Hash),用于图像相似性比较。它基于 Marr-Hildreth …

【git#5】远程操作 标签管理

📃个人主页:island1314 ⛺️ 欢迎关注:👍点赞 👂🏽留言 😍收藏 💞 💞 💞 生活总是不会一帆风顺,前进的道路也不会永远一马平川,如何面…

如何使用 Python 删除 Excel 中的行、列和单元格 – 详解

目录 开发环境准备 使用 Python 删除 Excel 表格中的行 删除特定行 删除空白行 删除含指定数据的行 使用 Python 删除 Excel 表格中的列 删除特定列 删除空白列 删除含指定数据的列 使用 Python 删除 Excel 中的单元格并自动移动剩余内容 删除特定单元格 删除空白单…

箭头函数(Arrow Functions)和普通函数(Regular Functions)

在 JavaScript 中,箭头函数(Arrow Functions)和普通函数(Regular Functions)有以下主要区别:1. 语法箭头函数:使用 > 语法,更简洁,可省略 function 和 return&#xf…

Spring Boot 配置注解处理器 - spring-boot-configuration-processor

前言 在 Spring Boot 开发中,配置属性的管理是构建企业级应用的核心环节。Spring Boot 通过 ConfigurationProperties 注解提供了一种类型安全的方式,将配置文件中的属性绑定到 Java 对象中。然而,开发者在使用过程中常会遇到配置属性无自动补…

java: DDD using oracle 21c

项目结构:domain:/*** encoding: utf-8* 版权所有 2025 ©涂聚文有限公司 * 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎* 描述:* Author : geovindu,Geovin Du 涂聚文.* IDE : IntelliJ IDEA 2024…

两张图片对比clip功能

<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>图片拖动Clip对比功能</title><style&g…