允许使用抽象类类型 isearchboxinfo 的对象_Java学习5-设计模式+抽象类/方法

05c648577695feaa24e94daddb8d87db.png

1.设计模式

设计模式:一套被反复使用、多数人知晓的,经过分类编目的、代码设计经验的总结,是软件开发人员在软件开发过程中面临的一般问题的解决方案。

  1. 项目中合理的运用设计模式可以完美的解决很多问题;
  2. 每种模式在现实中都有相应的原理来与之对应;
  3. 每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案。

23种基础模式

单例模式

要点:

  1. 某个类只能有一个实例;
  2. 必须自行创建实例;
  3. 必须自行向整个系统提供这个实例

实现:

  1. 只提供私有的构造方法;
  2. 含有一个该类的静态私有对象;
  3. 提供一个静态的公有方法用于创建、获取静态私有对象。

饿汉式:在创建类的同时实例化对象,以空间(内存中存在周期长)换时间(类加载比较快),线程比较安全

package com.imooc.singletonProj;
/*** 饿汉式:创建对象实例的时候直接初始化*/
public class SingletonOne {//1.私有构造方法private SingletonOne(){}//2.该类型私有静态实例private static SingletonOne instance =new SingletonOne();//3.静态共有方法用于创建、获取静态私有对象public static SingletonOne getInstance(){return instance;}
}

懒汉式:懒汉式:不直接创建静态实例,而是在使用的时候调用静态getter方法完成初始化,用时间换空间,存在线程风险

package com.imooc.singletonProj;
public class SingletonTwo {//1.私有构造方法private SingletonTwo(){}//2.该类型私有静态实例private static SingletonTwo instance=null;//3.创建开放的静态方法提供实例对象public static SingletonTwo getInstance(){if(instance==null)instance=new SingletonTwo();return instance;}
}

单例模式的优点:

  • 在内存中只有一个对象,节省内存空间;
  • 避免频繁创建销毁对象,提高性能;
  • 避免对共享资源的多重占用

单例模式的缺点:

  • 扩展困难;
  • 如果实例化后的对象长期不利用,系统将默认为垃圾进行回收,造成对象状态丢失

使用场景:

  1. 创建对象时占用资源过多,但同时又需要用到这类对象;
  2. 对系统内资源要求统一读写,如读写配置信息;
  3. 当多个实例存在可能引起程序逻辑错误,如号码生成器。

说实话,以上的内容不是太懂,可能学的还是不够深入

2.抽象(类、方法)

2.1 抽象类

如同之前的继承中的例子,父类Animal可以进行实例化,并执行吃的行为

Animal pet=new Animal("花花",2)
pet.eat()

程序运行没有问题,但是实际逻辑上应该是其子类(Cat or Dog)来执行对应的动物各自特殊的 吃的行为,因此使用 abstract 不允许实例化父类来避免写出上述没有意义的代码。防止父类和无意义实例化和子类设计的随意性,父类就是个 工具类(工具人)

抽象类应用场景:某个父类只是知道其子类应该包含怎样的方法,但无法准确知道这些子类如何实现这些方法。

2.2 抽象方法

父类中的方法被子类重写,因此父类的方法没有用,需要用 abstract 修饰方法,称之为 抽象方法,且没有方法体。使其无法调用,并且要求子类重写方法。否则,子类也需要成为抽象类才不用重写。

抽象类和抽象方法的存在是提醒编写者需要重写父类有,但是需要子类的重写的方法。

使用规则:

  1. abstract定义抽象类;
  2. 抽象类不能直接实例化,只能被继
  3. 承,可以通过向上转型完成对象实例化
  4. 包含抽象方法的必须是抽象类,但是抽象类可以没有抽象方法;
  5. static final private 与abstract无法共存;
  6. 可以定义一个抽象类的对象变量,但是只能引用非抽象子类的对象,即向上转型

Person p = new Strudent()

2.3 总结

抽象类禁止了父类被无效的实例化,而抽象方法则要求子类继承后必须重写(除非子类也是abstract),一代一代传下去,谁真正继承,谁重写。

只有抽象方法才需要重写,抽象类中的非抽象方法不需要重写,这是抽象类与接口的不同的其中一点

抽象类将 设计实现 相分开,谁继承,谁再具体实现,这就是抽象类存在的意义。

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

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

相关文章

初始Windows程序

1.属性 窗体标题 Name 窗体的图标 Icon 背景图片 BackgroundImage 背景颜色 BackColor 最大化按钮 MaxIMonBox 最小化按钮 Minimun 窗体边框样式 FormBorderStyle 窗体初始位置 StartPosition 窗体状态 WindowsState 背景图片拉伸 BackgroundImageLayout 窗体标题 Te…

计算机病毒是以独立的文件形式存在的对吗,计算机病毒以什么形式存在?

自从2113世纪出现第一种病毒以来,对于世界上共有5261种病毒的疾病数量有不同的看法. 无论有1,653种,病毒的数量仍在增加. 根据国外统计,计算机病毒以每周10种的速度增长. 根据我国部的统计,中国计算机病毒以每月4种的速度增长. 有…

HTML基础实例

本节列举了一些简单的HTML例子&#xff0c;帮助大家更感性地认识HTML标签。是不是对一些标签还不熟悉&#xff1f;别担心&#xff0c;后面几个章节会有详细说明&#xff0c;先跑几个例子看看效果吧。 HTML文档相关标签所有HTML文档必须以<!DOCTYPE html>声明开头。 HTM…

签署Java代码

在上一篇文章中&#xff0c;我们讨论了如何保护移动代码 。 提到的措施之一是签名代码。 这篇文章探讨了Java程序如何工作。 数字签名 数字签名的基础是密码学 &#xff0c;特别是公钥密码学 。 我们使用一组加密密钥&#xff1a;私有密钥和公共密钥。 私钥用于签名文件&am…

蜘蛛搜索引擎_SEO:搜索引擎蜘蛛要引导,不能佛系优化

又是一个不眠的夜晚&#xff0c;工作对生活节奏不断地敲打&#xff0c;我们新一代的年轻小伙不得不进步&#xff0c;满怀热情来挑战我们对于工作的激情&#xff0c;虽然每一天工作都是重复地进行&#xff0c;但是每一天都有我们留下的痕迹&#xff0c;为世界的美好增添一道绚丽…

SQL数据库排序规则修改

修改SQL数据库排序规则: 1.修改为单用户模式 2.然后关闭所有的查询窗口&#xff0c;修改Options的Collocation属性&#xff0c;如&#xff1a;Chinese_PRC_90_CI_AS 3.再修改为多用户模式 例如&#xff1a; ALTER DATABASE SRMain SET SINGLE_USER WITH ROLLBACK IMMEDIATE Go…

属于计算机病毒主要特征的是,[单选] 不属于计算机病毒的主要特征的是()

[单选] 不属于计算机病毒的主要特征的是()更多相关问题已知两直线l1&#xff1a;mx&#xff0b;y&#xff0d;20和l2&#xff1a;(m&#xff0b;2)x&#xff0b;y&#xff0b;40与两坐标轴围成的四边形有外接圆&#xff0c;则实数m的值为()A&#xff0e;1B&#xff0e;&#xf…

小程序滴滴车主板块的银行卡管理左滑删除编辑

最近在类似于滴滴软件的一款小程序&#xff0c;工程确实有点大&#xff0c;很多东西都是第一次做。这次记录一下关于左滑删除的一个代码记录。主要的思想就是计算滑动距离的大小来使用css中的 transition 控制滑动的效果&#xff0c;主流的都是控制边距margin来达到左滑的效果。…

华菱重卡仪表指示说明_仪表装置11种常见故障的解决方法

1. 转速表工作不正常或停止工作首先检查转速表背面的黑色3孔插头与插座接触是否良好及电压正常与否。3个端子的连接情况&#xff1a;端子a是电源负极&#xff0c;与仪表盘14孔白色插座上的棕色导线连接后搭铁(仪表盘上所有搭铁点均由棕色导线汇集在一起&#xff0c;并通过胶布包…

WADL中的JSON模式

在其他工作之间&#xff0c;我最近一直在审查WADL规范&#xff0c;以解决一些文档问题&#xff0c;以生成更新版本。 因为显而易见的一件事是缺少对XML以外的语言的语法支持-是的&#xff0c;您可以使用JSON <-> XML Schema的映射&#xff0c;但这对于JSON纯粹主义者而言…

怎么用python自制计算公式_如何使用Python和Numpy计算r平方?

我最初发布下面的基准是为了推荐numpy.corrcoef&#xff0c;愚蠢地没有意识到原来的问题已经使用了corrcoef&#xff0c;实际上是在询问高阶多项式拟合。我已经使用statsmodels为多项式r-squared问题添加了一个实际的解决方案&#xff0c;并且我已经离开了原始的基准测试&#…

ASP .NET SVN emmet 插件

学习 ASP .NET 时间的第三周&#xff1a; 来讲讲如何在 visual studio 2013...上搭载 SVN吧: 废话不多说&#xff1a; One Step&#xff1a; 电脑上已安装 visual studio 2013 等版本&#xff08;未安装时 红色区域是不存在的&#xff09; Two Step&#xff1a; 从官网上下载对…

Python之路3【知识点】白话Python编码和文件操作(截载)

无意发现这篇文章讲的比较好&#xff0c;存下来供参考&#xff1a; http://www.cnblogs.com/luotianshuai/p/5735051.html转载于:https://www.cnblogs.com/shikaihong/p/7778880.html

Http协议入门

[在此处输入文章标题] 1 web web入门 1&#xff09;web服务软件作用: 把本地资源共享给外部访问 2&#xff09;tomcat服务器基本操作 &#xff1a; 启动: %tomcat%/bin/startup.bat 关闭&#xff1a; %tomcat%/bin/shutdown.bat 访问tomcat主页&#xff1a; http://loca…

计算机硬件系统都是看得见的,计算机组成硬件系统).doc

计算机组成硬件系统)各位计算机协会的成员大家好&#xff0c;很高兴大家能陪我们走过这段难忘的时光。为了让大家更好的学到东西&#xff0c;我们特地将计算机方面的东西整理成技术文档&#xff0c;共大家使用&#xff0c;祝大家学得愉快&#xff01;湘信院计算机协会一&#x…

Google Guava –期货

这篇文章是我在Google Guava上的系列文章的延续&#xff0c;这次涵盖了Future。 Futures类是用于使用Future / ListenableFuture接口的静态实用程序方法的集合。 Future是提交给ExecutorService的异步任务&#xff08;可运行或可调用&#xff09;的句柄。 Future界面提供以下方…

iptables 配置后连接不上数据库_Linux服务器配置-VSFTP服务配置(三)

上文&#xff1a;Linux服务器配置-VSFTP服务配置(二)一、vsftpd服务防火墙配置1、主动(POST)模式 FTP 防火墙配置CentOS6 系统 iptables 的配置iptables -t filter --line-number -nL INPUT#显示现有防火墙规则&#xff0c;查看是否开启20、21号端口。iptables -t filter -I IN…

下标索引必须为正整数类型或逻辑类型_Python3 基本数据类型

Python中的变量不需要声明。每个变量在使用前都必须赋值&#xff0c;变量赋值以后该变量才会被创建。在Python中&#xff0c;变量就是变量&#xff0c;它没有类型&#xff0c;我们所说的"类型"是变量所指的内存中对象的类型。Python 3中有六个标准的数据类型&#xf…

noip模拟赛 写代码

分析&#xff1a;这其实就是括号匹配题&#xff0c;一眼贪心题&#xff0c;不过一开始贪错了&#xff0c;以为([)]是合法的......其实括号之间不能嵌套. 一开始的想法是尽量往左边填左括号&#xff0c;因为每种括号的数量都确定了&#xff0c;那么左括号和右括号的数量也就确定…

[CF797C] Minimal string(贪心,栈)

题目链接&#xff1a;http://codeforces.com/contest/797/problem/C 题意&#xff1a;给个字符串&#xff0c;求字典序最小的出栈顺序。 一开始想用优先队列记录全局最小的字符&#xff0c;然后每次入栈的时候检查当前字符是不是最小的&#xff0c;如果是那么同时pop。这样做的…