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分别对其进行了继承,那么我们如何让它可变呢,衍生出不同的子类就是一种可变,更严格的说就是一种扩展。

TestFlight分发测试app,提示无法安装 所请求的App不可用或者不存在 阅读详情

相关推荐

Ragflow技术栈分析及二次开发指南

Ragflow是目前团队化部署大模型+RAG的优质方案,不过其仍不适合直接部署使用,本文将从实际使用的角度,对其进行二次开发

兴趣使然的创作者 1万+

对可变性的封装原则

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

diaoju3333的博客 365

实战Nocobase插件开发:如何用yarn pm命令快速创建和测试API接口插件

本文详细介绍了如何使用Nocobase插件开发工具快速创建和测试API接口插件,涵盖从环境配置、插件骨架生成到数据模型定义和接口实现的完整流程。通过yarn pm命令简化开发步骤,帮助开发者高效构建支持CRUD的API插件,适用于低代码平台开发场景。

weixin_29313239的博客 456

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

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

hehahhe1227的博客 826

python 识别滑块验证码

博客来源于: https://www.cnblogs.com/wyh0923/p/16528354.html # -*- coding: utf-8 -*- # https://gov.pkulaw.cn/ 1. import io 2. import json 3. from pathlib import Path 4. from PIL import Image 5. import bas...

2102

发那科机器人抓手与物料搬运阀的配置与优化实践

本文详细介绍了发那科机器人抓手与物料搬运阀的配置与优化实践,包括基础配置指南、阀岛与输入模块的详细设置、测试程序编写与验证技巧,以及常见问题排查与性能优化建议。通过实际案例和经验分享,帮助技术人员快速掌握关键配置步骤,提升物料搬运系统的稳定性和效率。

weixin_33738555的博客 384

预测可变性和封装可变性

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

samprasyork的专栏 1113

等时替代模型( Isotemporal Substitution Model)

文献阅读:Associations of sedentary time and physical activity with adverse health conditions: Outcome-wide analyses using isotemporal substitution model(该论文于2022年4月28日发表在柳叶刀子刊 EClinicalMedicine 上)

姚巨龙的博客 1万+

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

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

bird 的砖篮 1368

从Raw图像到超分辨率:真实场景下的图像增强全流程指南

通过本文的学习,您已掌握了利用Raw图像实现真实场景超分辨率的完整技术链——从数据生成的“真实感模拟”,到双分支CNN的“细节+色彩”协同建模,再到模型的训练与落地。本文将带您从理论到实践,掌握利用Raw图像实现真实场景超分辨率的核心技术,让您的图像在细节和色彩上都能“更上一层楼”。是相机传感器直接输出的原始数据,保留了最完整的亮度、色彩信息(如Bayer阵列的原始采样),这为超分辨率提供了“富矿级”的信息基础。该分支以低分辨率RGB图像为参考,学习“色彩变换矩阵”,让恢复的细节拥有真实的色彩表现。

FJN110的博客 142

分子动力学仿真软件:LAMMPS_(16).应用案例分析

通过以上四个应用案例,我们详细介绍了如何使用LAMMPS进行不同系统的分子动力学仿真。从简单的液体水仿真到复杂的纳米管仿真,每个案例都包含了详细的步骤说明和代码示例。读者可以通过这些示例实际操作并验证结果,从而更好地理解LAMMPS的功能和使用方法。希望这些案例能够为读者在分子动力学仿真领域的研究和应用提供帮助。

kkchenjj的博客 837

可变性的封装原则

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

wangyun 684

【SAP HANA 46】关于HANA CPU高峰到 80-100%

关于HANA CPU高峰到 80-100%

探索 Java 编程的技巧、最佳实践和解决方案。本博客提供针对 Java 开发者的实用指南,涵盖从基础到高级话题,旨在提升编程效率和技能。 429

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

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

weixin_30727835的博客 109

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

抽象和封装

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

eneasy的专栏 434

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

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

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

2301_82242844的博客 834

《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、付费专栏及课程。

余额充值