java可变性原则的封装

深入理解Java包装类、封装及Lambda表达式 本篇博客深入探讨了Java中的包装类、封装原理以及Lambda表达式的基本概念和使用场景。通过对章节内容的解读,我们了解了包装类的内部机制、封装原则在实际编程中的应用,以及如何利用Lambda表达式简化代码。文章还讨论了Java 7引入的 阅读详情

可变性原则的封装就是指将可变的元素封装起来。


abstract class Person{
 //简单的给出了两个属性,姓名和性别
 protected String name="";
 protected String sex = "";
 
 public Person(String name,String sex){
  this.name = name;
  this.sex = sex;
 }
 
 /*
  * 不管男性女性都有走路的行为
  * */
 public void run(){
  System.out.println(this.name+"走路");
 }
 
 public void eat(){
  System.out.println(this.name+"吃饭");
 }
 
 public abstract void method();
}

class Man extends Person{

 public Man(String name, String sex) {
  super(name, sex);
  System.out.println("初始化男性同胞");
 }
 
 /**
  * 这是男性特有的行为,打仗(当然女性也可以打仗,我们只假设男性会打仗)
  */
 public  void method(){
  System.out.println(this.name+"参加战斗");
 }
}

class Women extends Person{

 public Women(String name, String sex) {
  super(name, sex);
  System.out.println("初始化女性同胞");
 }
 
 /**
  * 女性有生育的行为
  */
 public  void method(){
  System.out.println(this.name+"生小孩");
 }
}

public class Hello{
 public static void main(String[] args) {
  Person man = new Man("zhangsan", "male");
  man.eat();
  man.run();
  man.method();
  
  Person women = new Women("zhangsan", "male");
  women.eat();
  women.run();
  women.method();
 }
}

由于person是可变的,所以我们对其进行了抽象封装,man和women分别对其进行了继承,那么我们如何让它可变呢,衍生出不同的子类就是一种可变,更严格的说就是一种扩展。

YOLOv5s模型训练全流程解析:从数据准备到实战检测 本文详细解析了YOLOv5s模型训练的全流程,涵盖从环境搭建、数据准备与格式转换,到模型训练、参数调优及实战检测的完整步骤。文章提供了具体的代码示例和常见问题解决方案,旨在帮助开发者,特别是新手,高效掌握YOLOv5s模型训练的核心技术,并成功应用于实际检测任务中。 阅读详情

相关推荐

STM32Cubemx+CanFestival:从零到一的CANopen移植实战

本文详细介绍了如何使用STM32CubeMX和CanFestival实现CANopen协议栈的移植,从开发环境搭建到核心配置步骤,再到调试与问题排查。通过实战经验分享,帮助开发者快速掌握STM32与CANopen的结合应用,提升嵌入式系统开发效率。

weixin_42558093的博客 420

对可变性的封装原则

http://zhidao.baidu.com/link?url=cfRIgIL2YrU9HnKFvDCIBBWopD3lFIlBdNgazFpEIfcRyjcjLDpHtZE1hM-V3rExCimreXVvapq64IlOB9vT0a “对可变性的封装原则”(Principle of Encapsulation of Variation ,EVP)。即找到一个系统的可变因素,将之封...

diaoju3333的博客 365

3台虚拟机部署Doris详细文档(含校验步骤)

摘要:本文详细介绍了Apache Doris在3台虚拟机上的集群部署方案。采用1主FE+1从FE+1观察者FE+3BE的混合部署模式,确保元数据高可用性。硬件配置建议测试环境4核16GB内存,生产环境8核64GB内存。部署步骤包括系统环境配置(关闭防火墙、内核参数优化)、FE/BE节点配置启动、集群初始化验证等。重点配置了IP白名单(172.30.0.115)和数据目录(/data/doris)。通过MySQL客户端和WebUI可监控集群状态,实现千万级数据的实时分析能力,后续可通过增加BE节点线性扩展。

weixin_41026747的博客 933

Java中对象的可变性和不可变性(mutability and immutability)

学习Java中对其可变类型和不可变类型的理解和比较

hehahhe1227的博客 826

双系统下 ubuntu 20.04 突然 开机黑屏报错 hdaudioC0D2: unable to configure disabling

今天在开实验室开双系统台式机时,ubuntu 20.04 系统下,突然在某次关机后再开机时,本来启动好好的,但是在进行图形化启动时,本来应该是显示输入账号和密码时,直接黑屏报错了,内容为 hdaudioC0D2: unable to configure disabling ,这里是记录了报错的解决全过程

qq_48717745的博客 990

保姆级教程:用Verilog手把手实现一个MIPI CSI-2 D-PHY接收器(附PPI接口时序详解)

本文提供了一份详细的Verilog实现MIPI CSI-2 D-PHY接收器的教程,重点解析了PPI接口时序和deskew数据对齐技术。通过模块划分、时钟域处理、状态机设计和错误恢复机制等实战内容,帮助开发者掌握高速数据接收的核心技术,适用于嵌入式视觉系统开发。

weixin_30619101的博客 513

预测可变性和封装可变性

    设计模式的核心思想就是"预测可变性和封装可变性"                                                                                              下面说说我对封装可变性的体会吧,所谓封装可变性,就是有这样的效果,当需求变更或者设计变更的时候,需要对这个模块进行修改,但是不影响他的调用模块和被调用模

samprasyork的专栏 1113

3、保险行业商业智能解决方案的理解与实施

本文详细探讨了商业智能(BI)在保险行业的应用与实施策略,涵盖了从BI环境开发的关键步骤、自下而上与自上而下的数据仓库开发方法,到决策支持工具的选择与使用。文章还分析了BI系统与互联网、内联网和外联网的结合方式,并讨论了购买与自建方案的优劣比较,最后总结了商业智能成功的关键因素及其对保险行业带来的商业价值。通过实际案例与未来趋势展望,展示了商业智能如何推动保险企业的数字化转型和竞争力提升。

moon9的博客 97

(转)设计模式-封装可变性

最难的不是理解设计模式,而是在实际项目中灵活应用它们,设计模式看似简单,用起来却不知从何下手。理论是用来实践的,实践才能出真理。设计模式属于OO的一部分, Gof的23种模式只不过是设计模式的沧海一粟,不同的领域都会产生不同的设计模式,当然你也可以总结出自己的设计模式。对于学习设计模式的方法,我们不需要一开始就花很长的时间把它们都读通读透,只要花个十几天每天两个小时对每个模式有个简单的印象

bird 的砖篮 1368

ABAP Channels 实战:在 ABAP 7.40 中用 WebSocket 打造实时双向通信

本文详细介绍了SAP ABAP 7.40引入的ABAP Channels通信框架,包含AMC(ABAP Messaging Channels)和APC(ABAP Push Channels)两部分。AMC作为应用服务器内部的消息总线,支持发布/订阅模式,可实现跨会话实时通信;APC基于WebSocket协议,用于浏览器等客户端与ABAP服务器的双向实时交互。文章通过一个乒乓球游戏案例展示了ABAP Channels的实时协作能力,并详细解析了AMC的配置方法、消息发送与接收的代码实现,帮助开发者理解如何利用

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 221

【WSN定位】基于AOA算法实现目标无源定位附matlab代码

1 简介 2 部分代码 clear all; close all; clc;​stations = [0 0 0;20 0 0]; %基站位置​X = -100:100; %生成目标位置Y = X.*sin(X);Z = X+Y;N = length(X);Locations = zeros(N,3);angs = zeros(N,4);for i = 1:N angs(i,:) = Angs(stations*1e3,[X(i),Y(i),Z(i)]*1e3);end​for

qq_59747472的博客 2308

可变性的封装原则

      1)什么会改变?        对象。        2)如何封装?        抽象化。        3)如何抽象化?        定义界限。不要越界。否则会是可变性变得混乱。          4)与开闭原则的关系?         开闭原则定义了抽象层。可变性的封装原则定义了抽象对象。       ...

wangyun 684

基于YOLOv11的农作物病虫害检测系统设计与实现

我们使用公开的IP102病虫害数据集作为基础,该数据集包含102种病虫害类别,覆盖水稻、小麦、玉米等多种主要农作物。图像数量:75,222张类别数:102图像分辨率:从640×480到4000×3000不等标注格式:PASCAL VOC格式此外,我们还收集了部分田间实际拍摄的图像以增强模型泛化能力。

YOLO 595

java设计原则---开闭原则

开闭原则:指的是一个软件实体应对对扩展开发,对修改关闭(Software entities should be open for extension, but closed for modification)。这个原则是说在设计一个模块的时候,应对使这个模块可以在不被修改的前提下被扩展,换言之,应对可以不必修改源代码的情况下改变这个模块的行为。 根据开闭原则,在设计一个软...

weixin_30727835的博客 109

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

抽象和封装

二.抽象和封装 整理自 《java与模式》阎宏编著 1.关于抽象类 只要有可能,不要从具体类继承。 [img]http://eneasy.iteye.com/upload/picture/pic/10111/e4fd3f74-07f5-3207-8c55-378bf29cc57d.jpg[/img] 如图,在一个以继承关系形成的等级结构里面,树叶节点应该是具...

eneasy的专栏 434

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

看完这本《Effective Java》,我悟了 —— 日更ing

分享一些资料给大家,我觉得这些都是很有用的东西,大家也可以跟着来学习,查漏补缺。《Java高级面试》《Java高级架构知识》《算法知识》《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门即可获取!法的调用转发到一个内部private类的实例上,这个内部private类继承了骨架实现类。编写骨架类比较简单,这里用一个例子说明,以Map.Entry接口为例,明显的方法是getKeygetValuesetValue,接口里面定义了equals和hashCode。

2301_82242844的博客 834

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

《Java与模式》笔记

《Java与模式》笔记 第四章                “开-闭”原则(OCP)         OCP:Open-ClosedPrinciple,说一个软件实体应该对扩展开放,对修改关闭,最早由BertrandMeyer提出,原文:Softwareentities should be open for extension, but closed for modification. OC

leon709的专栏 1017

设计模式_简单工厂模式(Simple Factory)

开闭原则(OCP) 1 什么是开闭原则 一个软件实体应该对扩展开放,对修改关闭。这个原则是说,在设计一个模块的时候,可以在不修改的前提下被扩展。 2 怎样做到开闭原则 2.1.抽象化是关键 在java中,可以给出一个或者多个抽象java类和接口规定所有的具体类必须提供的方法特征作为抽象层。这个抽象层预见了所有可能的扩展。从而满足了,对修改关闭 2.2.对可变性的封装原则(EVP) ...

iteye_10461的博客 124

标题:Java中时间工具类的封装及最佳实践 在软件开发中,时间处理是一项至关重要的任务,而 Java 提供了丰富的日期和时间处理功能。然而,为了更方便地处理时间,开发人员经常会封装自己的时间工具类,

时间工具类的封装可以减少代码重复,提高代码的可维护性,并且可以帮助开发人员更方便地处理时间。然而,在使用封装的时间工具类时,需要注意线程安全性、异常处理和最佳实践,以避免潜在的问题。希望本文能够帮助读者更好地封装和使用时间工具类,提高代码质量和开发效率。这篇博文涵盖了在 Java 中封装时间工具类的最佳实践,以及为什么需要封装时间工具类。如果您有任何问题或者建议,请随时提出,我会乐意与您讨论。/**** 日期月份加一个月* 日期(2014-11)*/try {

Mars 615

Java封装是为了更好的重构

通常,一些用户(基于软件开发功能的程序员)希望你的代码在某些方面保持不变。所以你想修改代码,但他们希望代码保持不变。由此引出了面向对象设计中的一个基本问题:“如何区分变动的事物和不变的事物”。

码农洞见 215

java之封装

1.封装 1. 封装 1.1 private关键字 private是一个修饰符,可以用来修饰成员(成员变量,成员方法) 被private修饰的成员,只能在本类进行访问,针对private修饰的成员变量,如果需要被其他类使用,提供相应的操作 提供“get变量名()”方法,用于获取成员变量的值,方法用public修饰 提供“set变量名(参数)”方法,用于设置成员变量的值,方法用public修饰 1.3 this关键字 this修饰的变量用于指代成员变量,其主要作用是(区分局部变量和成员变量的.

youngbird1998的博客 5828

java与模式学习

一、类图1.在UML类图中,类名是正体字,说明是具体类;类名是斜体字说明是抽象类。类图共有五层,第一是类名层(不能省略),其他都可省略,依次为属性层(定义变量)、方法层、性质层(由内部变量、赋值函数、取值函数组成即get、set)、实现父类和接口。方法前有+表示是public,-表示是private,如果前面是#,表示是protected。方法下如果有一道下划线,表示这是一个静态方法。2. 类图中

天翔的专栏 1577

Effective Java-第4章

第4章 类和接口 类和接口是Java程序设计语言的核心,它们也是Java语言的基本抽象单元。Java语言提供了许多强大的基本元素,供程序员用来设计类和接口。 13. 使类和成员的可访问性最小化 要区别设计良好的模块与设计不好的模块,最重要的因素在于,这个模块对于外部的其他模块而言,是否隐藏其内部数据和其他实现细节。设计良好的模块会隐藏所有的实现细节,把它的API与它的实现清晰隔离开来。然后,...

weixin_33690367的博客 99

七条优秀实践Java设计类和接口的清单

写Java时,其实就是在写各种类和接口,那么在设计类和接口的时候,有哪些优秀实践呢? 本文结合《Effective Java》第四章《类和接口》和自己的理解及实践,讲解了设计Java类和接口的优秀指导原则,供您参考。 清单1 - 使类和成员的可访问性最小化 这个原则,其实就是我们常说的“封装”,也是软件设计的基本原则之一。 类与类之间,隐藏内部数据和实现细节,只通过API进行通信,我们常见的set、get方法都是非常好的例子。 信息隐藏的好处:各个模块可独立开发、团队成员可以并行开发、减少过多的暴露从而降低

weixin_52756722的博客 391

Effective-Java-Note-类和接口

类和接口一、使类和成员的可访问性最小化首先我们要了解一个 软件设计基本原则:封装模块隐藏所有的实现细节,只通过API进行模块间通信为什么要这样设计呢? 有效的接触系统模块之间的耦合:各模块独立开发,测试,优化,使用,理解,修改。 提高软件的重用性:因为模块基本只依赖所使用的环境 降低了构建大型系统的风险:即使整个系统不可用,但是有些独立的模块仍可用 接下来我们得先了解一下Java提供的访问控制机制:

少晒太阳,如鱼得水 466

关于对象类的思考

1.要使一个类成为不可变的必须满足以下条件: 所有数据域都是私有的 没有修改器方法 没有一个访问器方法,它会返回一个指向可变数据域的引用 2.类变量和方法可以在类中的任意顺序出现。类变量只能声明一次但在一个方法内的不同的非嵌套块中可以多次声明相同的变量名,如果一个局部变量和类变量具有相同的名字,则局部变量优先,类变量被隐藏 3.类的抽象是将类的实现和使用分离。从类外可以访问的全部方法和数据域,以及...

b66051612的博客 244
上一篇: java银行业务调度系统
下一篇: android ListView使用的三种方法汇总(通过继承BaseAdapter,使用SimpleAdapter和SimpleCursorAdapter)
撒行地
博客等级 码龄17年 28粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值