浅谈,Java当中普通类与抽象类的区别

前言

这篇博客没有什么特别有技术含量的地方,只是对于JavaSE 基础语法的一个小总结,基本功还是很重要的,因此笔者想写下来而已

普通类

什么是普通类?

普通类是可以直接实例化的类,包含具体的实现和属性。它是Java中最常见的类类型,用于创建对象和实现具体功能。

普通类的特点

常见的特征笔者就不说了,就说几个笔者觉得重要的

1.实例化  普通类可以直接实例化

class Dog {void bark() {System.out.println("Bark");}
}Dog dog = new Dog(); // 可以直接实例化

2.方法实现  普通类的方法需要具体实现

class Cat {void eat() {System.out.println("The cat is eating");}
}

3.不能包含抽象方法。

4.能被继承,但是不要求子类重写方法

class Animal {}class Dog extends Animal {}

抽象类

与普通类不同的,是抽象类

抽象类是使用abstract关键字定义的类,不能直接实例化。它可以包含抽象方法(没有方法体的方法),这些方法必须在子类中实现。抽象类通常用于定义一组行为和属性的通用接口。

抽象类的特点

与普通类呼应,抽象类有那么几个特点

1.不用也不能实例化

abstract class Animal {abstract void makeSound();
}// Animal a = new Animal(); // 错误,不能实例化

2.存在抽象方法,不用在抽象类中实现,可以在子类中实现

abstract class Animal {abstract void makeSound();
}class Dog extends Animal {void makeSound() {System.out.println("Bark");}
}

3.可以存在普通方法

abstract class Animal {abstract void makeSound();void Say() {System.out.println("CN NO.1");}
}

4.子类必须实现所有的抽象方法,除非子类也是抽象类。

abstract class Animal {abstract void make();
}class Dog extends Mammal {void make() {System.out.println("Bark");}
}

综上所述的总结

特性

普通类

抽象类
实例化可以直接实例化不能直接实例化
抽象方法不能包含抽象方法可以包含抽象方法
方法实现所有方法都有具体实现可以有具体方法和抽象方法
继承可以被继承,不要求实现方法子类必须实现所有抽象方法或为抽象类
用途实现具体功能定义通用行为和属性的接口

 那么我们就该思考了,为什么我们需要普通类和抽象类

以下内容有的来自网络,有的来自笔者自己的理解,有错误,欢迎直接私信骂我就好了,不用和我客气

普通类,是直接用来描述对象的,也是直接用来实现某种具体的需求的

但是,当你想要定义一个类的通用接口(方法和属性),而具体实现依赖于子类时,使用抽象类。抽象类适合用来为相关类提供一个统一的接口。

比如

public  abstract class Users
{protected String name;protected WORK[] Work;public Users(String name) {this.name = name;}@Overridepublic String toString() {return "Users{" +"name='" + name + '\'' +'}';}public abstract int menu ();public  void  Doop(int choice, booklist Booklist){Work[choice].work(Booklist);}
}
public class Adminuser extends Users
{public Adminuser(String name){super(name);this.Work=new WORK[]{new Exitop(),new Findop(),new Addop(),new Deleteop(),new Show()};}public int menu (){System.out.println("*********管理员************");System.out.println("1.查找图书");System.out.println("2.增加图书");System.out.println("3.删除图书");System.out.println("4.显示图书");System.out.println("0.退出系统");System.out.println("*********************");System.out.println("请输入你的操作:");Scanner sc = new Scanner(System.in);int choice = sc.nextInt();return choice;}}
public class Nomaluser extends Users
{public Nomaluser(String name){super(name);this.Work=new WORK[]{new Exitop(),new Findop(),new Borrowop(),new Returnop(),new Show()};}public int menu (){System.out.println("**********用户***********");System.out.println("1.查找图书");System.out.println("2.借阅图书");System.out.println("3.归还图书");System.out.println("4.显示图书");System.out.println("0.退出系统");System.out.println("*********************");System.out.println("请输入你的操作:");Scanner sc=new Scanner(System.in);int choice=sc.nextInt();return choice;}
}

在上述例子中,定义了抽象方法      public abstract int menu ()

在两个类中通过方法重写,实现了不同的需求

有一个小总结

  • 普通类用于创建具体的对象和实现具体的功能。
  • 抽象类用于定义通用的行为和属性接口,提供代码复用和强制实现机制,尤其在框架和设计模式中发挥重要作用。

写在结尾

这篇博客如果能有人看我会很开心,最好能指出我的错误,但我其实还是写给自己看的,也算是一个阶段性的回顾吧,比起把这些东西写在笔记本里不知道哪天就丢了,我更希望能行写在这里让能看到的人一起进步,顺带指出我的错误!

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

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

相关文章

【Python性能优化】取最值的差异

取最值的差异 测试Windows 测试结果Linux 测试结果 测试 测试内容:从一组 x, y, z 坐标值中获得每个维度(x、y、z)的值域范围。此处不考虑将数据临时存放到内存,再整组获取值域的操作(因为对单文件这么做问题不大&…

PS系统教学01

在前面几节内容基本介绍了PS的基本作用,简单的对PS中的某些基础功能进行介绍应用。 接下来我们进行系统的分享。 本次分享内容 基础的视图操作 接下来我们是对于PS工作区域的每个图标工具进行详细的分享 抓手工具缩放工具 这个图标是将工具栏由一列变成两列 一…

004 String

文章目录 String设计为不可变原因安全性缓存哈希值字符串池化不可变对象的天然线程安全提高代码可读性 private finalString a new String("ccc");和String b "ddd"使用new关键字创建字符串使用字符串字面量创建字符串 去掉final内部状态的不一致性多线程…

SpringBoot——整合SLF4j进行日志记录

目录 日志 项目总结 新建一个SpringBoot项目 pom.xml application.properties项目配置文件 logger.xml日志配置文件 TestController控制器 SpringbootSlf4jApplication启动类 启动项目 生成logger.log日志文件 日志 在开发中,我们经常使用 System.out.prin…

物联网六大核心技术——青创智通

工业物联网解决方案-工业IOT-青创智通 物联网六大核心技术,是构建万物互联的基础,它们相互协作,共同实现物联网的广泛应用和深远影响。这六大技术分别是感知技术、网络通信技术、智能识别技术、计算技术、平台技术和安全技术,它们…

aws lakeformation注册s3位置的原因

参考资料 lakeformation底层数据的访问逻辑 向lakeformation注册s3位置的目的是让lakeformation控制对AWS S3 位置底层数据的访问(以下简称LF) 注册s3位置后可以进行两种授权 数据访问授权(SELECT、INSERT 和 DELETE) 数据位置…

不含一阶导数项的线性二阶微分方程的通解

假设这里有一个线性二阶微分等式,形式如下: (1) 其中是连续的,是在实闭区间是连续的,如果有人倾向于推广,在相对假弱的假设下,这个结果能够被发现。如果是下列其次线性方程的任意两个线性无关的…

小度推出全球首款基于文心大模型的学习机Z30,仅售价6699元

5月27日,小度科技召开新品发布会,全球首款基于文心大模型的学习机——小度学习机Z30重磅发布。 据「TMT星球」了解,该产品基于文心大模型,重新定义了“AI老师”的能力边界,不仅是一款能为孩子提供全面、有效学习辅导的…

报修新选择:一款软件搞定所有维修问题

数字化、智能化时代发展迅速,各类便捷、智能化软件应用已经深入到我们生活和工作的方方面面。尤其是在企业或学校的设备管理中,报修维修工作一直是一个重要环节。传统的报修方式,如电话报修、填写纸质报修单等,已经无法满足现代高…

Superset二次开发之柱状图自定义初始化时Data Zoom数据缩放值

Superset项目柱状图来自Echarts 首先Echarts实现柱状图数据缩放初始化默认值的效果 核心代码 设置Datazoom 的start 和end myChart.showLoading(); $.get(ROOT_PATH /data/asset/data/obama_budget_proposal_2012.list.json,function (obama_budget_2012) {myChart.hideLoa…

Python 文件操作指南:使用 open 和 with open 实现高效读写

🍀 前言 博客地址: CSDN:https://blog.csdn.net/powerbiubiu 👋 简介 本系列文章主要分享文件操作,了解如何使用 Python 进行文件的读写操作,介绍常见文件格式的读取和写入方法,包括TXT、 CS…

aws lakeformation工作流程和权限管理逻辑

lakeformation在IAM权限模型之外提供独立的更细粒度的权限,控制数据湖数据的访问 能够提供列、行和单元格级别的精细控制 lakeformation的目的是要取代s3和iam策略,主要功能为 数据摄入,LF可以将不同类型的数据统一管理安全管理&#xff0…

SRAM和Flash的区别

什么是SRAM SRAM的特点 什么是Flash Flash存储器的特点 SRAM和Flash的区别 什么是SRAM SRAM:全称为Static Random Access Memory,即静态随机存取存储器,是一种常见的计算机内存类型。 SRAM电路通常由存储矩阵、地址译码器和读/写控制电路三…

小程序内使用路由

一:使用组件 1)创建组件 2)在需要的页面的json/app.json可实现局部使用和全局使用 在局部的话,对象内第一层,window配置也是第一层,而在全局配置也是在第一层,window在window对象内.第二层.内部执行遍历不一样. 3)页面使用 上述所写可实现在页面内使用组件.效果是页面内可以将…

十四天学会Vue——Vue核心(理论+实战)中篇(第二天)

声明:是接着上篇讲的哦,感兴趣可以去看一看~ 这里一些代码就不写了,为了缩减代码量,大家知道就可以了: Vue.config.productionTip false //阻止 vue 在启动时生成生产提示。热身小tips,可以安装这个插件&…

阿里通义千问大模型AI接入火车头自动生成内容插件

插件特点: 可以根据采集的关键词,自动生成文章可自定义提示词 也可以分析标题重写一个标题2个提问标签 如有需要可自由增加对话标签自己可以设置TXT关键词导入,自动采集生成 安装说明: 1.需要python环境 ,具体可以…

HTML5 游戏开发基础及流程

目录 XMLHttpRequestAPI游戏开发者的Web技术游戏引擎HTML5游戏开发流程HTML5游戏核心技术 功能技术音频Web Audio API图形WebGL (OpenGL ES 2.0)输入Touch events, Gamepad API, 设备传感器,WebRTC (en-US), Full Screen API, Pointer Lock API语言JavaScript (或是 C/C++ 使用…

新楚文化知网收录文学艺术类期刊投稿

《新楚文化》是由国家新闻出版总署批准,湖北省文学艺术界联合会主管,湖北今古传奇传媒集团有限公司主办的正规期刊。主要刊登文化、文学、艺术类稿件;包括传统文化、非遗、历史文化、地方文化、中外友好文化交流、文学作品研究、艺术研究等方…

在C++中自定义命名空间,在命名空间中定义string变量,同时定义一个函数实现单词逆置

代码 #include <iostream> #include <cstring> using namespace std; namespace my_space {string s;void reverse(string s);//定义逆置函数 } using namespace my_space; void my_space::reverse(string s){int lens.size();int i0;int jlen-1;while(i<j){//…

恶意退市潮?

一张A4纸&#xff0c;炸出一池鱼。史上&#xff08;最&#xff09;严新规&#xff0c;这一拳打到了&#xff08;违规减持&#xff09;上。 新规算是对新国九条的补充&#xff0c;更是给大股东们上紧箍咒。那市场买账吗&#xff1f;昨晚爆出19家董监高亲属&#xff08;违规&…