时间:2023-04-14
标签: #Java #abstract类 #设计模式


可以将一个不包含任何抽象方法的类指明为 abstract,在类中的抽象方法没啥意义但想阻止创建类的对象时,这么做就很有用。
——————
这是有用的,可是这么做的意义是什么呢,在实际开发过程中,能举个例子么?

在实际开发过程中,有时候我们希望一个类仅仅作为其他类的基类,而不允许直接创建该类的实例。这种情况下,将这个类声明为抽象类是有意义的。即使这个抽象类没有抽象方法,它仍然不能被实例化,从而确保了这个类仅作为基类存在。

例如,假设我们有一个系统,其中包含各种类型的员工。我们想创建一个通用的基类 Employee,该类包含一些共享的属性和方法,但我们希望用户只能创建具体类型的员工实例(如 ManagerDeveloper 等),而不是直接创建 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 类声明为抽象类,即使它没有抽象方法。这样一来,用户只能创建 ManagerDeveloper 等具体类型的员工实例,而不能直接创建 Employee 实例。这有助于我们在代码中实现更清晰的层次结构和逻辑。

使用抽象类阻止实例化相关推荐

  1. java抽象类实例化_抽象类能实例化吗

    抽象类能实例化吗? 这个问题我想了一个晚上,看了好几篇别人的博客,但结果都各不相同,每个人有每个人的理解,后来我想明白了: 抽象类不能直接通过new去实例化一个对象,那它就是不能实例化,要获取抽象类的 ...

  2. 抽象类能实例化吗?——口气很强硬——“不能”(详解)

     抽象类能实例化吗? 这个问题我想了一个晚上,看了好几篇别人的博客,但结果都各不相同,每个人有每个人的理解,后来我想明白了: 抽象类不能直接通过new去实例化一个对象,那它就是不能实例化,要获取抽象类 ...

  3. 不能实例化抽象类抽象类不能实例化

    在c++和java中我们会定义很多类,但是我们会遇到在对类进行new实例化时会遇到"不能实例化抽象类"或者"抽象类不能实例化",针对这个问题要首先理解两个内容& ...

  4. python抽象类可以实例化吗,是否可以在Python中创建抽象类?

    这是一种非常简单的方法,无需处理ABC模块. 在__init__要成为抽象类的类的方法中,可以检查self的"类型".如果self的类型是基类,则调用方将尝试实例化基类,因此引发异 ...

  5. 实践报告抽象类java_java抽象类不能实例化实践是检验真理的唯一标准

    下午试了半天,发现不行,没法搞 即对含有抽象方法的抽象类实例化失败. 网上有这个资料: 抽象类就一定不可以实例化吗? 呵呵,不一定哦..看下面的例子: public abstract class Yo ...

  6. 没有躲过的坑--抽象类不能实例化对象(但是你明明定义的不是抽象类)

    今天在开发过程中遇到了一个错误:不能实例化抽象类 这个错误完全是自己疏忽大意造成的. 首先我们知道,一个类如果是抽象类,我们就不能用这个类实例化一个对象. 什么样的类是抽象类呢? C++没有C Sha ...

  7. 接口和抽象类不能实例化对象

    ArrayList points = new ArrayList(); Iterator i = points.iterator(); points是ArrayList的对象,用points.iter ...

  8. php接口调用实例化,PHP抽象类和接口用法实例详解

    本文实例讲述了PHP抽象类和接口用法.分享给大家供大家参考,具体如下: 前言 对于oop,估计大多数人并不陌生.有些人除PHP外也学习不少其他语言,会发现php的不同之处,可能语法极其丑陋,但并不妨碍 ...

  9. 抽象类实例化 使用原功能 c++_java 学习笔记 day08 final/static关键字、抽象类和接口...

    1.final关键字 final修饰类:此类不能被继承 final修饰变量:则变量不能被修改,是常量 final修饰方法:父类的方法被final修饰时,不能被重写 2.static关键字 2.1被st ...

最新文章

  1. UpdatePanel控件的简单属性学习
  2. linux设置history历史记录
  3. React 18 带给我们的惊喜
  4. 2019计算机科学与技术调剂信息,福建师范大学计算机科学与技术2019考研调剂信息...
  5. springcloud Hystrix Dashboard微服务监控
  6. 数据库比特币勒索病毒攻击警示,云和恩墨技术通讯六月刊精选
  7. fastdfs:安装nginx
  8. 线程、协程、Goroutine的区别和联系
  9. linux date英文日期、星期简写说明(中文对照)
  10. Deecamp笔记——点云目标跟踪 Open3D连续可视化
  11. sirikit_iOS 12 Siri捷径SiriKit
  12. 教你如何在闲鱼买二手iPhone
  13. Linux系统学习方法论
  14. 导入三方库是出现NotFount
  15. UML中关系(4+4)
  16. 计算机三级有必要考吗?计算机三级有哪些科目?
  17. 牛客寒假训练营4-爆炸的符卡洋洋洒洒 (dp变形)
  18. NYOJ 541 最强DE 战斗力(大数水)
  19. 天没有塌下来,这里有GitHub之外的五个最佳选择
  20. 2021美赛D题思路

热门文章

  1. 网线直连,Synergy低延迟顺滑共享鼠标键盘
  2. SecureCRT标签显示IP地址
  3. 从一个不同角度看精准度与召回
  4. mysql数据库的在线数据备份与数据恢复
  5. OpenOCD调试ARM芯片,Ubuntu 安装arm-none-eabi-gdb
  6. 染色质调控区域的研究:对CHIP-seq和ATAC-seq发展的深入思考
  7. 深挖数字科技与场景 详解京东数字科技三大技术能力
  8. java 打印 日历 详细 注解_Java类库 LocalDate类的简单使用(一)之打印本月的日历...
  9. Matlab实用程序--图形应用-阶梯图
  10. 艺赛旗(RPA) Python 科学计算:matplotlib (精华博文)