Java抽象类和普通类区别、 数组跟List的区别

2023-09-22 10:23:12

抽象类

Java中的抽象类是一种特殊的类,它不能被实例化,只能被继承。抽象类通常用于定义一些通用的属性和方法,但是这些方法的具体实现需要在子类中完成。抽象类中可以包含抽象方法和非抽象方法。

抽象方法是一种没有实现的方法,只有方法的声明,没有方法体。抽象方法必须在抽象类中声明,而且子类必须实现这些抽象方法。如果子类没有实现抽象方法,那么子类也必须声明为抽象类。

抽象类的子类必须实现抽象类中的所有抽象方法,否则子类也必须声明为抽象类。子类可以继承抽象类中的非抽象方法,也可以重写这些方法。

抽象类的方法特性包括:

1. 抽象方法必须在抽象类中声明,而且没有方法体。

2. 抽象类可以包含非抽象方法,这些方法可以被子类继承或重写。

3. 抽象类不能被实例化,只能被继承。

4. 抽象类的子类必须实现抽象类中的所有抽象方法,否则子类也必须声明为抽象类。

5. 抽象类可以有构造方法,但是不能被直接调用,只能被子类调用。

6. 抽象类可以有静态方法和静态变量,但是不能被子类继承或重写。

抽象类跟普通类的区别

有以下几个区别:

1. 实例化:普通类可以直接实例化对象,而抽象类不能被实例化。抽象类只能作为父类被继承,子类必须实现抽象类中的抽象方法才能被实例化。

2. 抽象方法:抽象类中可以包含抽象方法,而普通类不可以。抽象方法是一种没有具体实现的方法,只有方法的声明,没有方法体。子类继承抽象类后,必须实现抽象类中的所有抽象方法。

3. 继承:普通类可以单独继承其他类,而抽象类只能作为父类被继承。一个类只能继承一个抽象类,但可以同时继承一个抽象类和其他普通类。

4. 多态性:抽象类可以通过多态性的特性,引用指向子类对象。这样可以实现对不同子类对象的统一操作。而普通类没有多态性的特性。

5. 实现细节:普通类可以包含属性、方法和构造函数等实现细节,而抽象类可以包含属性、方法、构造函数和抽象方法等实现细节。

总的来说,抽象类是一种特殊的类,用于定义一组相关的类的共同特征和行为,强制子类实现抽象方法。而普通类是一种具体的类,可以直接实例化对象,并且可以包含具体的实现细节。


数组

Java中的数组是一种用于存储多个相同类型数据的数据结构。它是一个固定长度的容器,可以在其中存储同一类型的数据。数组在Java中是一个对象,可以通过索引访问其中的元素。

在Java中,数组的声明需要指定数组的类型和长度。使用以下语法定义一个数组:

数据类型[] 数组名 = new 数据类型[数组长度];

其中,数据类型表示数组中元素的数据类型,数组名是数组的名称,数组长度表示数组中元素的数量。

例如,定义一个包含5个整数的数组可以使用以下代码:

int[] numbers = new int[5];

会创建一个名为numbers的整数数组,其中包含5个元素。

除了基本类型的数组,Java还支持引用类型的数组。例如,可以创建一个存储字符串的数组:

String[] names = new String[3];
names[0] = "luxifa";
names[1] = "degula";

数组跟List的区别

Java中数组和List是两种不同的数据结构。

1. 数组是一种固定长度的数据结构,它可以存储相同类型的元素。数组在创建时需要指定长度,并且长度不能改变。数组可以通过索引访问和修改元素,具有快速的随机访问能力。例如,int[] arr = new int[5]; 表示创建一个长度为5的整型数组。

2. ListJava集合框架中的一种接口,它可以动态地调整大小,并且可以存储不同类型的元素。List接口的常见实现类有ArrayListLinkedListList可以通过索引访问和修改元素,也可以通过添加、删除等方法对元素进行操作。例如,List<Integer> list = new ArrayList<>(); 表示创建一个整型ArrayList

List的定义方式有以下几种:

1. 使用ArrayList类实现:
   List<Integer> list = new ArrayList<>();

2. 使用LinkedList类实现:
   List<String> list = new LinkedList<>();

3. 使用Vector类实现:
   List<Double> list = new Vector<>();

4. 使用Stack类实现:
   List<Character> list = new Stack<>();

其中,List是一个接口,不能直接实例化,需要使用具体的实现类来创建对象。

更多推荐

【SLAM】10.纵观SLAM,对比方案和未来方向

"天下谁人配白衣”SLAM方案研究方向SLAM方案站在历史角度,看一下为SLAM的发展带来贡献的方案:2007年—A.J.Davison—MonoSLAM视觉SLAM的先驱,建立在EKF基础上,此前基本无法在线运行,意义较大;应用场景窄;2007—Klein—PTAM也是SLAM重要事件:双线程结构;跟踪部分实时响应,

UI设计师的工作职责 优漫动游

五、思维导图软件:MindManager或XMindMindManager或XMind都为思维导图软件,具体使用哪个软件并不重要,根据个人习惯就行。思维导图想必大家在进行策划分析和头脑风暴时,都用过。在UI设计中,也是经常用到。优途UI设计培训中特开设该课程就是主要用来整理产品需求思路、产品架构、产品的交互逻辑等等。总

springBoot整合harbor

<docker.version>3.2.13</docker.version><fastjson.version>1.2.75</fastjson.version><dependencies><dependency><groupId>com.github.docker-java</groupId><artifactId

性能测试 —— 性能测试常见的测试指标 !

一、什么是性能测试先看下百度百科对它的定义,性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。我们可以认为性能测试是:通过在测试环境下对系统或构件的性能进行探测,用以验证在生产环境下系统性能是否达到预估的性能需求,发现系统可能存在的性能瓶颈,进而改善优化并系统的性能,提高系

铁路设备屡遭破坏!RFID电子锁实现铁路防护网破坏实时报警管理

铁路防护网是铁路运输中保障安全的重要组成部分,然而,铁路设备被破坏的情况时有发生,给铁路运输带来了严重的安全隐患和经济损失。一、铁路防护网面临的挑战铁路防护网作为铁路运输的重要保障措施,时刻面临着破坏行为的威胁。传统的锁控系统存在以下问题:开关锁记录不完善:传统锁控系统无法准确记录每次开锁和关锁的时间、地点以及操作人员

Xamarin.Android实现App内版本更新

目录1、具体的效果2、代码实现2.1基本原理2.2开发环境2.3具体代码2.3.1基本设置2.3.2系统的权限授予2.3.3进度条的layout文件2.3.4核心的升级文件3、代码下载4、知识点5、参考文献1、具体的效果有事需要在程序内集成自动更新的功能,网上找了下,改改适配下Xamarin.Android,效果如下2

API接口文档管理系统平台搭建(更新,附系统源码及教程)

简介这是一款简洁大方的API接口文档管理系统,附系统源码及教程方法。可以轻松管理和使用API接口。安装步骤打开config/database.php配置数据库信息导入数据库data.sql设置运行目录为/public伪静态设置thinkPHP后台地址/admin/login.html账号:admin密码:123456源

LLM(一)| 百川智能baichuan7B、13B、53B以及baichuan2总结

之前在文章baichuan-53BVSChatGLM-6B对比中做过百川大模型53B和ChatGLM6B模型的效果对比,由于百川大模型的内测模型是53B,因此本次对比参数量差异较大,但仍然可以看到两个模型的效果。百川大模型在benchmark上有超越ChatGLM和LLaMA的迹象,尤其是在中文任务上的表现,下面分别对

让Pegasus天马座开发板吃上STM8S标准库

WeCanStudio官方仓库的示例工程,只提供基于STM8S003寄存器方式来开发Pegasus天马座开发板。在此,我将基于官方的工程示例,将STM8S标准库移植到工程中。先上图,看运行结果:main.c文件#include"config.h"#include"delay.h"#defineLED_GPIO_PORT

OpenGL之着色器

着色器(Shader)是运行在GPU上的小程序。这些小程序为图形渲染管线的某个特定部分而运行。从基本意义上来说,着色器只是一种把输入转化为输出的程序。着色器也是一种非常独立的程序,因为它们之间不能相互通信;它们之间唯一的沟通只有通过输入和输出。GLSL着色器是使用一种叫GLSL的类C语言写成的。GLSL是为图形计算量身

MyCat主从数据库集群搭建

1背景最近工作需要对比几种数据库技术方案,主从读写分离集群也是其中之一。接着上一篇文章《MySQL主从数据库搭建》基础上继续搭建MyCat主从集群。2MyCat什么是MyCat?MyCat是数据库中间件,就是介于数据库和应用之间,进行数据处理与交互的中间服务。可以对数据进行分片处理,从原有一个库,被切分为多个分片数据库

热文推荐