Java 抽象类能不能实例化

2023-11-12

短回答就是:不能

这里有 2 个概念,什么是抽象类和什么是实例化。

实例化

实例化简单来说就是为 Java 中使用的对象分配存储空间。

抽象类

从代码上来说,抽象类就是一个用 abstract 关键字来修饰的类。

这个类除了不能被实例化以外,其他都能做。

在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。

抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。

// Java program to demonstrate abstract class
// cannot have instance

public abstract class ClassOne {

	public void printSomething()
	{
		System.out.println("Hello in abstract class");
	}
}
class CreateClassOne {

	public static void main(String[] args)
	{
		// instance of abstract
		// class "ClassOne"
		ClassOne obj = new ClassOne();
	}
}

上面的代码运行时候将会出现错误:

prog.java:17: error: ClassOne is abstract; cannot be instantiated
        ClassOne obj = new ClassOne();
                       ^
1 error

因为你尝试实例化这个抽象类。

为什么不能实例化抽象类

很多人在这里都有点懵,为什么我就不能实例化抽象类。

正如我们上面说的,实例化就是为类分配需要的内容空间,以便于类去进行计算。

因为抽象类没有足够的信息, JVM 没有办法知道抽象类到底给他们分配什么。比如说没有具体的成员变量和成员方法。

你说,我们可以这样呀:

 HashMap hashMap = new HashMap();
 AbstractMap abstractMap = new TreeMap();

这样是对 abstractMap 进行实例化吗?这显然不是。

这是你用抽象类的名字定义了一个 Map,但是这个 Map 是用 TreeMap 实例化的。

最后你内存里面得到的是一个 TreeMap 而不是 abstractMap。

2023-09-09_07-31-37

Java 抽象类能不能实例化 - Java - iSharkFly

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java 抽象类能不能实例化 的相关文章

随机推荐

  • 使用Spring Boot和EasyExcel的导入导出

    在当今信息化社会 数据的导入和导出在各种业务场景中变得越来越重要 为了满足复杂的导入导出需求 结合Java编程语言 Spring Boot框架以及EasyExcel库 我们可以轻松地构建出强大而灵活的数据处理系统 本文将引导您通过一个案例学
  • Odoo(OpenERP)补货规则笔记整理 - 草稿

    感谢Jeffery Jason ccdos roson 等人分享讨论 推式规则 移库规则 从一个库位推送到另一个库位 拉式规则 补货规则 包括生产 采购 移动 进行仓库设置时 会自动创建默认的拉式规则 最小库存规则 再订货规则 补货 某个库
  • iphone 服务器未响应,iPhone 死机没反应?先试试这些方法!

    iPhone 突然死机了 相信很多果粉都遇过这种情况 通常在手机死机的时候 无论我们怎么点屏幕都没反应 如果在一些紧急情况下发生死机 是很头疼的一件事 那么 iPhone 死机没反应 我们到底应该怎么处理呢 今天 疯师傅教你们三招 自己在家
  • 静态类型

    从程序运行或者二进制的角度 或者说 运行时 的角度来看 静态类型就是 没有类型 因为程序实际上不在运行时保存任何的静态类型 这也是静态类型又被称为 编译时类型 的原因 因为一旦经过编译 静态类型系统就基本上消失殆尽了 为什么又说基本上了呢
  • freemarker+itext5实现用模板方式,导出word和pdf(spring-boot直接可使用)

    第一步 需要引入的jar包
  • PHP$_FILES原生图片上传

    PHP FILES原生图片上传 if empty FILES file name header Content type text html charset utf 8 if FILES file error 0 判断上传是否正确 file
  • 接口自动化测试框架-Python+Requests+Yaml

    零代码极限封装的 接口自动化测试框架 目前已经完全能够实现真正的零代码落地并在企业中推广 其中用到的最核心的封装技术如下 核心技术 1 热加载封装 是全网最早应用于自动化测试框架的封装技术 2 Requests统一请求封装 3 接口关联封装
  • windows下Qt、MinGW、libmodbus源码方式的移植与使用

    windows下Qt MinGW libmodbus源码方式的移植与使用 1 前言 libmodbus官网 https libmodbus org github下载 https github com stephane libmodbus 截
  • element-ui 源码解析,你知道 v-loading 是如何实现的吗?

    前言 相信大家肯定都用过 element ui 里面的 v loading 来写加载 但是如果让你来写一个的话你会怎么写呢 众所周知 element ui 框架的 v loading 有两种使用方式 一种是在需要 loading 的标签上直
  • Yolov5目标检测环境搭建过程(Cuda+Pytorch+Yolov5)

    本文介绍了如何搭建yolov5目标检测代码的环境 详细记录了python虚拟环境 安装pytorch 加载yolov5项目以及运行检测程序的全过程 完成了本文的yolov5项目搭建后 可以查看本文下一篇文章 使用yolov5训练自己的数据集
  • chown、chmod详解

    首先通过ll命令查看目录下文件 主要看最前面一列 我把 drwxr xr x 拿出来说 d 目录 文件类型 rwx 可读 可写 可执行 2 4位 所属者权限 r x 可读 可执行 5 7位 所属组权限 r x 可读 可执行 8 10位 其它
  • OpenTK---空间中单个三维点的绘制

    OpenTK是一个跨平台的包 可以让我们能够使用C 来调用OpenGL来进行三维可视化的开发 因为这是第一篇 所以会写的比较详细 后面重复用到的内容就不再二次说明了 创建主程序中的类 using OpenTK Mathematics usi
  • 关于iptables禁止全部ip访问问题

    关于iptables禁止全部ip访问问题 旁边兄弟在iptables想要实现任何ip禁止访问 只开发个别端口供个别ip访问 开放ip端口 A INPUT s 192 168 1 1 p tcp dport 8848 j ACCEPT A I
  • C++学习(四十一)stderr stdout

    stdout 标准输出设备 stderr 标准错误输出设备 两者默认向屏幕输出 但如果用转向标准输出到磁盘文件 则可看出两者区别 stdout输出到磁盘文件 stderr在屏幕 在默认情况下 stdout是行缓冲的 他的输出会放在一个buf
  • 双向链表为何时间复杂度为O(1)?

    双向链表相比于单向链表 所谓的O 1 是指删除 插入操作 单向链表要删除某一节点时 必须要先通过遍历的方式找到前驱节点 通过待删除节点序号或按值查找 若仅仅知道待删除节点 是不能知道前驱节点的 故单链表的增删操作复杂度为O n 双链表 双向
  • SpringBoot注解大全(超详细)

    一 启动注解 Spring Boot 应用的入口注解 SpringBootApplication SpringBootApplication 是一个注解 它是 Spring Boot 应用的入口注解 用于表示一个应用程序的主类 这个注解通常
  • php设置一分钟访问一次接口,php 如何锁定接口,让一个接口,同一时间只处理同一人的一次请求?...

    最后我是用redis锁解决问题的 锁的代码如下 redis操作 ps 如果没有安装redis 会直接返回false 不会报错 Created by PhpStorm User haua Date 16 10 21 Time 23 02 cl
  • J2Cache的学习

    J2Cache的学习 此教程基于黑马程序员Java品达通用权限项目 哔哩哔哩链接 https www bilibili com video BV1tw411f79E p 97 一 j2cache介绍 j2cache是OSChina 开源中国
  • java高并发

    转载地址 https www cnblogs com lr393993507 p 5909804 html 对于开发的网站 如果网站的访问量非常大 那么我们应该考虑相关的 并发访问问题 并发是绝大部分程序员头疼的问题 为了更好的理解并发和同
  • Java 抽象类能不能实例化

    短回答就是 不能 这里有 2 个概念 什么是抽象类和什么是实例化 实例化 实例化简单来说就是为 Java 中使用的对象分配存储空间 抽象类 从代码上来说 抽象类就是一个用 abstract 关键字来修饰的类 这个类除了不能被实例化以外 其他