使用抽象类阻止实例化
时间:2023-04-14
标签: #Java #abstract类 #设计模式
可以将一个不包含任何抽象方法的类指明为 abstract,在类中的抽象方法没啥意义但想阻止创建类的对象时,这么做就很有用。
——————
这是有用的,可是这么做的意义是什么呢,在实际开发过程中,能举个例子么?
在实际开发过程中,有时候我们希望一个类仅仅作为其他类的基类,而不允许直接创建该类的实例。这种情况下,将这个类声明为抽象类是有意义的。即使这个抽象类没有抽象方法,它仍然不能被实例化,从而确保了这个类仅作为基类存在。
例如,假设我们有一个系统,其中包含各种类型的员工。我们想创建一个通用的基类 Employee
,该类包含一些共享的属性和方法,但我们希望用户只能创建具体类型的员工实例(如 Manager
、Developer
等),而不是直接创建 Employee
实例。
下面是一个简单的例子:
public abstract class Employee {private String name;private int id;public Employee(String name, int id) {this.name = name;this.id = id;}public String getName() {return name;}public int getId() {return id;}// 其他共享的方法
}public class Manager extends Employee {public Manager(String name, int id) {super(name, id);}// Manager特有的方法
}public class Developer extends Employee {public Developer(String name, int id) {super(name, id);}// Developer特有的方法
}
在这个例子中,我们将 Employee
类声明为抽象类,即使它没有抽象方法。这样一来,用户只能创建 Manager
和 Developer
等具体类型的员工实例,而不能直接创建 Employee
实例。这有助于我们在代码中实现更清晰的层次结构和逻辑。
使用抽象类阻止实例化相关推荐
- java抽象类实例化_抽象类能实例化吗
抽象类能实例化吗? 这个问题我想了一个晚上,看了好几篇别人的博客,但结果都各不相同,每个人有每个人的理解,后来我想明白了: 抽象类不能直接通过new去实例化一个对象,那它就是不能实例化,要获取抽象类的 ...
- 抽象类能实例化吗?——口气很强硬——“不能”(详解)
抽象类能实例化吗? 这个问题我想了一个晚上,看了好几篇别人的博客,但结果都各不相同,每个人有每个人的理解,后来我想明白了: 抽象类不能直接通过new去实例化一个对象,那它就是不能实例化,要获取抽象类 ...
- 不能实例化抽象类抽象类不能实例化
在c++和java中我们会定义很多类,但是我们会遇到在对类进行new实例化时会遇到"不能实例化抽象类"或者"抽象类不能实例化",针对这个问题要首先理解两个内容& ...
- python抽象类可以实例化吗,是否可以在Python中创建抽象类?
这是一种非常简单的方法,无需处理ABC模块. 在__init__要成为抽象类的类的方法中,可以检查self的"类型".如果self的类型是基类,则调用方将尝试实例化基类,因此引发异 ...
- 实践报告抽象类java_java抽象类不能实例化实践是检验真理的唯一标准
下午试了半天,发现不行,没法搞 即对含有抽象方法的抽象类实例化失败. 网上有这个资料: 抽象类就一定不可以实例化吗? 呵呵,不一定哦..看下面的例子: public abstract class Yo ...
- 没有躲过的坑--抽象类不能实例化对象(但是你明明定义的不是抽象类)
今天在开发过程中遇到了一个错误:不能实例化抽象类 这个错误完全是自己疏忽大意造成的. 首先我们知道,一个类如果是抽象类,我们就不能用这个类实例化一个对象. 什么样的类是抽象类呢? C++没有C Sha ...
- 接口和抽象类不能实例化对象
ArrayList points = new ArrayList(); Iterator i = points.iterator(); points是ArrayList的对象,用points.iter ...
- php接口调用实例化,PHP抽象类和接口用法实例详解
本文实例讲述了PHP抽象类和接口用法.分享给大家供大家参考,具体如下: 前言 对于oop,估计大多数人并不陌生.有些人除PHP外也学习不少其他语言,会发现php的不同之处,可能语法极其丑陋,但并不妨碍 ...
- 抽象类实例化 使用原功能 c++_java 学习笔记 day08 final/static关键字、抽象类和接口...
1.final关键字 final修饰类:此类不能被继承 final修饰变量:则变量不能被修改,是常量 final修饰方法:父类的方法被final修饰时,不能被重写 2.static关键字 2.1被st ...
最新文章
- UpdatePanel控件的简单属性学习
- linux设置history历史记录
- React 18 带给我们的惊喜
- 2019计算机科学与技术调剂信息,福建师范大学计算机科学与技术2019考研调剂信息...
- springcloud Hystrix Dashboard微服务监控
- 数据库比特币勒索病毒攻击警示,云和恩墨技术通讯六月刊精选
- fastdfs:安装nginx
- 线程、协程、Goroutine的区别和联系
- linux date英文日期、星期简写说明(中文对照)
- Deecamp笔记——点云目标跟踪 Open3D连续可视化
- sirikit_iOS 12 Siri捷径SiriKit
- 教你如何在闲鱼买二手iPhone
- Linux系统学习方法论
- 导入三方库是出现NotFount
- UML中关系(4+4)
- 计算机三级有必要考吗?计算机三级有哪些科目?
- 牛客寒假训练营4-爆炸的符卡洋洋洒洒 (dp变形)
- NYOJ 541 最强DE 战斗力(大数水)
- 天没有塌下来,这里有GitHub之外的五个最佳选择
- 2021美赛D题思路
热门文章
- 网线直连,Synergy低延迟顺滑共享鼠标键盘
- SecureCRT标签显示IP地址
- 从一个不同角度看精准度与召回
- mysql数据库的在线数据备份与数据恢复
- OpenOCD调试ARM芯片,Ubuntu 安装arm-none-eabi-gdb
- 染色质调控区域的研究:对CHIP-seq和ATAC-seq发展的深入思考
- 深挖数字科技与场景 详解京东数字科技三大技术能力
- java 打印 日历 详细 注解_Java类库 LocalDate类的简单使用(一)之打印本月的日历...
- Matlab实用程序--图形应用-阶梯图
- 艺赛旗(RPA) Python 科学计算:matplotlib (精华博文)