首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【设计模式】软件设计七大原则 ( 里氏替换原则 | 代码示例 | 类示例 | 方法入参示例 | 方法返回值示例 )

文章目录 一、里氏替换原则代码示例 ( 类的层级 | 反面示例 ) 1、长方形 2、正方形 二、里氏替换原则代码示例 ( 类的层级 | 正面示例 ) 1、四边形接口 2、长方形类 3、正方形类 三、...时 , 方法的前置条件 ( 输入参数 ) , 要比 父类方法的输入参数更宽松 ; 如 : 父类的参数是 HashMap , 如果要符合 里氏替换原则 , 子类如果重载父类方法 , 那么需要使用 Map...的参数 比父类的方法参数更严格 , 那么这就不是重载方法 , 而是重写方法 ; 1、父类 package liskovsubstitution; import java.util.HashMap;...时 * 方法的前置条件 ( 输入参数 ) , 要比 父类方法的输入参数更宽松 ; * * 如果在父类中参数类型是 Map * 在子类中重载参数类型是...时 * 方法的前置条件 ( 输入参数 ) , 要比 父类方法的输入参数更宽松 ; * * 如果在父类中参数类型是 Map * 在子类中重载参数类型是

30920

里式替换原则(LSP)

讲继承 所有引用父类的地方都必须可以透明的使用其子类对象 几个原则: 1、子类必须完全实现父类的方法 2、子类可以有自己的个性 3、覆盖或实现父类的方法时输入参数可以被放大 4、覆写或实现父类的方法时输出结果可以缩小...类C1继承C,后来需要增加新功能,类C1并没有新写一个方法,而是直接重写了父类C的func方法,违背里氏替换原则,引用父类的地方并不能透明的使用子类的对象,导致运行结果出错。...m){ System.out.println("执行父类..."); } } //map 比hashmap更宽松 import java.util.Map; public class...Son extends Father{ public void func(Map m){//方法的形参比父类的更宽松 System.out.println("执行子类...")...HashMap h = new HashMap(); f.func(h); } } 运行结果:执行父类

815120
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Web转Native?探究Flutter和传统浏览器布局原理的异同。

    class="outer"> div class="inner">我是一段测试文本div> div> 在xml里我们定义了父子节点,然后给内层赋予比外层更宽更高的样式属性。...class="outer"> div class="inner">div> div> 在Flutter里,我们用ConstrainedBox来容纳最大最小宽度的约束。...四、Flutter的Layout Flutter的Layout实现比浏览器优雅得多,但对Web开发人员相对陌生,有学习成本。我们学习Flutter布局的时候,都会在官方文档里看到下面的口诀。...加入自己的理解,我把它解释成: 父组件向下传递约束,子组件向上申报尺寸,最终由父组件决定子组件的显示位置。 字面上有点晦涩,我们用官方提供的例子来说明。...所以尽管子元素申报了一个更大的尺寸,但父元素计算时,仍会把它框定在约束范围内,尽可能满足之,所以我们看到红色区域被黄色填满,Text里的内容也只能在这个区域里排布了。

    1.9K2513

    CSS 关于line-height详细讲解

    文章目录 前言 MDN对line-height定义 line-height单位 line-height的计算 实际开发案例: 对于块盒 对于行盒 前言 下面图片来自网络: MDN对line-height...line-height单位 数字:该属性的应用值是这个无单位数字乘以该元素的字体大小 长度:指定用于计算 line box 的高度;如:px、em 等 百分比:计算值是给定的百分比值乘以元素计算出的字体大小...line-height的计算 line-height是参考font-size的值计算的,如下图为无单位赋值;另外百分比、px等类似。...第一张图片:父元素中设置的line-height值等于其自身盒子(border+padding+content)高度,导致其子元素中的文字内容下移。...第二张图片:父元素中的line-height值设置等于其自身盒子content区的高度,则其子元素继承后,其文字内容能在父元素中居中显示。

    69130

    【JAVA-Day59】方法重写:面向对象编程中的重要概念

    例如,如果父类的方法是 public,那么子类重写的方法也必须是 public。 重写方法不能声明比被重写方法更宽泛的异常,但可以声明更窄的异常,或者不抛出异常。...异常处理: 重写方法不能声明比被重写方法更宽泛的异常,但可以声明更窄的异常,或者不抛出异常。 访问权限: 重写方法不能使用比被重写方法更窄的访问修饰符。...解答示例: 重写方法的访问修饰符不能比被重写方法的访问修饰符更严格。例如,如果父类的方法是 public,那么子类重写的方法也必须是 public。 4. 能否重写父类的静态方法?...解答示例: 重写方法不能声明比被重写方法更宽泛的异常,但可以声明更窄的异常,或者不抛出异常。这遵循了异常处理的规则,保证了异常的合理性和规范性。...要确保内容结构清晰,表达方式生动,同时引入图表和代码时,需要清晰地说明其在方法重写中的应用和意义。

    6410

    2021前端面试高频 HTML + CSS

    ="container"> div class="box"> div> div> .container {...class="container"> div class="box"> div> div> .container{...减少图片HTTP 请求」 缺点 : 「1.文件体积比源文件大1/3,影响浏览器加载,渲染时间加长」 「2.兼容性问题,ie8 以下的版本不支持」 ❞ 11. 什么是BFC? 如何生成BFC?...浮动元素不会影响块级元素的布局 但浮动元素会影响行内元素的布局,让其围绕在自己周围,撑大父级元素,从而间接影响块级元素布局 最高点不会超过当前行的最高点、它前面的浮动元素的最高点 不超过它的包含块,除非元素本身已经比包含块更宽...14.1 左右定宽,中间自适应 ❝中间 flex = 1, 宽用百分比,左右固定宽,父元素 display:flex。

    95040

    【JavaSE专栏59】方法重写的概念及优先级问题,面向对象的多态性机制

    当子类继承自父类时,子类可以重写父类中已经存在的方法,以实现自己的特定逻辑或行为。方法重写要求子类中的方法与父类中被重写的方法具有相同的方法名称、参数列表和返回类型。...子类中的重写方法必须与父类中的被重写方法具有相同的方法签名。 重写方法的访问修饰符不能比被重写方法的访问修饰符更严格。例如,如果父类的方法是 public,那么子类重写的方法也必须是 public。...重写方法不能声明比被重写方法更宽泛的异常,但可以声明更窄的异常,或者不抛出异常。...重写方法不能使用比被重写方法更窄的访问修饰符,例如,如果父类的方法是 protected,那么子类重写的方法可以是 protected 或 public,但不能是 private。...如果父类的方法是 private 的,能够被子类重写吗? 如果子类重写了父类的方法,能够抛出比父类方法声明更宽泛的异常吗? 父类的静态方法能够被子类重写吗?

    28650

    面象对象设计6大原则之三:里氏替换原则

    里氏替换原则(LSP),The Liskov Substitution Principle 定义 所有引用基类的地方必须能透明地引用其子类的对象,即子类可以拓展父类的功能,但不能修改父类已有的功能。...也就是说在父类出现的地方子类也可以出现,并且替换为子类也不会报错,引用者根本不需要知道引用的是父类还是子类,但是反过来就行不通了,子类出现的地方父类就不一定能出现并代替子类。...里氏替换原则的特点: 1、子类可以拓展父类的功能,但不能修改父类已有的功能,如果修改了父类已有的功能,可能导致父类定义的功能在子类覆盖后不适用。...2、重载父类的方法时,子类的方法形参应该比父类更宽松。 3、实现父类的抽象方法时,子类的方法输出结果应该比父类更加严格。...3、只要继承父类就拥有父类的全部属性和方法,这样减少了代码重复创建量共享了代码但也约束了子类的行为,降低了系统灵活性。

    59460

    如何完成响应式布局,有几种方法?看这个就够了

    动画属性 animation详解(看完就会) CSS3 transform 2D转换之移动 旋转 缩放(详细讲解看完就会) CSS3 Z—Index 详解 CSS3 positon定位详解(通俗易懂) 目录... 进行宽高百分比设置时,是根据父元素的宽高设置的。                 ...缺点 计算困难 需要计算相对应的百分比值,最主要的是百分比往往只用于设置狂高, 在设置其他元素时,根据的对象百分比不同,比如我们在设置内外边距的时候,是根据 父级的宽度设置的,更有像border-radius...属性,如果设置border-radius为百分比,则是相对于自身的宽度的百分比进行设置的。         ...="c">div> div> 对于em单位 是根据父元素的字体大小的倍数设置的,, 父元素设置为32px,子元素设置为1em,那么结果就是32px(父元素修改成了32px

    1.1K30

    【设计模式】软件设计七大原则 ( 里氏替换原则 | 定义 | 定义扩展 | 引申 | 意义 | 优点 )

    文章目录 一、里氏替换原则定义 二、里氏替换原则定义扩展 三、里氏替换原则引申意义 四、里氏替换原则意义 五、里氏替换原则优点 一、里氏替换原则定义 ---- 里氏替换原则定义 : 如果 对每一个 类型为...; 里氏替换原则 是 继承复用 的基石 , 只有当 子类 可以 替换 父类 , 并且 软件功能不受影响 时 , 父类才能真正的被复用 , 子类也能在父类的基础上 增加新的行为 ; 里氏替换原则 是对...适用于 一个父类的话 , 那 一定适用于其子类 , 所有 引用父类的地方 , 必须能 透明地 使用其子类的对象 , 子类对象 能够 替换父类对象 , 而 程序逻辑不变 ; 通过继承深入理解里氏替换原则...重载 父类的方法 时 , 方法的前置条件 ( 输入参数 ) , 要比 父类方法的输入参数更宽松 ; 如 : 父类的参数是 HashMap , 如果要符合 里氏替换原则 , 子类如果重载父类方法 , 那么需要使用..., 方法的 后置条件 ( 返回值 ) 要 比父类更严格或相等 ; 如 : 父类的返回值是 Map , 子类的相同的方法 是 Map 或 HashMap ; 四、里氏替换原则意义 ---- 里氏替换原则

    1.6K20

    css布局 - 工作中常见的两栏布局案例及分析

    目录: 一、大结构上的导航栏和内容区域两栏布局     1、博客园为例     2、腾讯课堂个人中心页     3、慕课网个人中心页     4、github个人中心页 二、mini版的nav...左侧nav浮动 右侧内容区margin让出nav的宽度范围。自适应。 css样式: ? 简陋的效果 ? 4、最后说Github,就比较简单粗暴了 百分比宽度+浮动。 ?...左边内容区域(content),右边导航栏(nav)。 ? 看git的代码,都是一个风格,几乎宽度百分比定天下。上边截图代码的同样是这个思路,具体实现如下。 html大致结构: ?...内容区域设置了左浮动和自身视觉宽度上的width值(也就是设计稿上多宽这里设置了多宽)不过我的愚见,觉得这里可以不设置浮动。反而设置上百分比宽度是为了自适应很有必要。 css代码: ?...div class="txt">我是右边内容示范区div> div> 以下,img和txt的第一行才是最核心的布局代码,其他都是美化用的样式代码。

    2.9K11

    Django学习之十三:提高页面开发效率

    Django 模板 模板按照我的理解,就是让html中内容不固定,让html内容已后端的方式动态起来(虽然前端mvvm框架也也开始有模板概念,所以广义说模板概念不限于后端)。...load同时也会导入tag和filter 过滤器和功能tag的区别 Tags的功能比filter要复杂的多,因为tag几乎可以做任何事情,包括最重要的渲染模版inclusion_tag。...在app目录下创建templatetags目录,名字必须固定,这个是默认查找加载指定自定义tag和filter文件的地方,并在目录创建__init__.py文件。...比如说,一个父模板,所有的子模版都是在继承父类的基础上修改覆盖。...而包含可以在多个父模板中使用,突破了必须在一个父模板下的限制,但是包含不是随便插入,是类似插座和插头的概念,被插入模板需要提供给插入模板相关数据的。。

    1.1K10

    css教程之文本字体

    bolder 定义比继承值更重的值 lighter 定义比继承值更轻的值 :100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900...3.text-align 定义元素内容的水平对齐方式。 left:内容左对齐。 center:内容居中对齐。 right:内容右对齐。...如果该盒没有基线,就将底部外边距的边界和父级的基线对齐 sub:把当前盒的基线降低到合适的位置作为父级盒的下标(该值不影响该元素文本的字体大小) super:把当前盒的基线提升到合适的位置作为父级盒的上标...(该值不影响该元素文本的字体大小) text-top:把当前盒的top和父级的内容区的top对齐 text-bottom:把当前盒的bottom和父级的内容区的bottom对齐 middle:把当前盒的垂直中心和父级盒的基线加上父级的半...class="text"> div>字体abc abcdiv> div>aabbdiv> div> div class

    1.2K40
    领券