抽象类和接口(1)(抽象类部分)

抽象类概念

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

此外还有抽象方法这个概念 :

在打印图形例子中, 我们发现, 父类 Shape 中的 draw 方法好像并没有什么实际工作, 主要的绘制图形都是由 Shape 的各种子类的 draw 方法来完成的. 像这种没有实际工作的方法, 我们可以把它设计成一个 抽象方法(abstract method), 包含抽象方法的类我们称为 抽象类(abstract class) 

  注意:抽象类可以不含有抽象方法,但含抽象方法的类必须为抽象类。

所以讲完了它的概念,我们就开始它的语法吧。

抽象类语法 

 在Java中,一个类如果被 abstract 修饰称为抽象类,抽象类中被 abstract 修饰的方法称为抽象方法,抽象方法不用给出具体的实现体。一个抽象类内可以不含抽象方法。

// 抽象类:被abstract修饰的类
public abstract class Shape {// 抽象方法:被abstract修饰的方法,没有方法体abstract public void draw();abstract void calcArea();// 抽象类也是类,也可以增加普通方法和属性public double getArea(){return area;}protected double area;    // 面积
}

注意:抽象类也是类,内部可以包含普通方法和属性甚至构造方法。但是肯定有一些不同的特性跟正常类相比。所以接下来我们就介绍下抽象类特性。

抽象类特性

1.抽象类不能实例化创建对象

shape此时为抽象类类型,所以这时用它实例化创建对象就报错了。

所以抽象类的出现,就是要被继承,只有继承了抽象类才能使用它。

2. 如果有抽象方法存在于抽象类中,则它的子类就必须重写这个抽象类中的所有抽象方法,不然报  错,当然也可以用abstract修饰,使子类也变为抽象类,这时就轮到子类的子类去重写完两个抽象类中的所有抽象方法,如果没有重写完,就会报错。

作者的扩展:

抽象类的子类即使被abstract修饰了,它也能对其父类中的抽象方法进行重写,如果全部重写完了,则其子类的子类就可以不用重写了(你想重写也可以,不必多此一举) ,同理如果重写了部分抽象方法,则子类的子类只要重写另一部分的抽象方法就行。(当然,你还想再重写已经重写过的抽象方法也可以)

3.因为子类抽象方法需要被重写,所以它的子类抽象方法不能被final,private,static修饰  

4.抽象类中可以有构造方法,供子类创建对象时,初始化父类的成员变量

5.抽象类中不一定包含抽象方法,但是有抽象方法的类一定是抽象类(多次强调了)

6.抽象方法不能被调用(注意是抽象类中的抽象方法,不是重写的方法),调用了抽象类中的抽象方法的话就会直接被系统说报错。

 抽象类的作用

好了所以抽象类和接口的抽象类部分就结束了,之后将给大家带来接口部分的讲解。还希望家人们能给作者点一个小小的赞,评个论,互关下,这对我真的很重要,互相帮助互相进步呀!

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

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

相关文章

拿到今日现货白银价格 如何开始分析?

很多投资者看到近期现货白银的强劲涨势,并且开户入场。但入场之后,他们发现对如何找到机会还不甚了解。比方说我们拿到今日现货白银价格要如何开始分析呢,很多新入场的投资者根本没有头绪,下面我们就来讨论一下相关的方法。 我们可…

Java入门之数据类型

一、数据类型 基本数据类型 (1)如果要定义“long类型的变量要在数值后面加一个L作为后缀” (2)如果要定义float类型的变量的时候数据值也要加一个作为后缀 小结: 练习 内容: 姓名:巴巴托斯 &…

【比特币】比特币的奥秘、禁令的深层逻辑与风云变幻

导语: 比特币(Bitcoin),这个充满神秘色彩的数字货币,自诞生以来便成为各界瞩目的焦点。它背后所蕴含的Mining机制、禁令背后的深层逻辑以及市场的风云变幻,都让人欲罢不能。今天,我们将深入挖掘比特币的每一个角落&…

docker将本地镜像pull到阿里云和registry

目录 一、上次到阿里云服务器 1、制作一个带有vim功能的Ubuntu镜像 2、在阿里云上面创建镜像仓库 3、从阿里云仓库中上传和拉取镜像 二、上传镜像到本地私有库registry 1、下载镜像docker registry 2、运行私有库registry,相当于本地有个私有docker hub。 3…

Rust使用feature特性和条件编译,以及常用feature使用说明

Cargo Feature 是非常强大的机制,可以为大家提供条件编译和可选依赖的高级特性,可以为你省下不少的代码量来判断操作系统和条件编译等功能。rust官方条件编译文档:Conditional compilation - The Rust Reference features特性 Featuure 可以…

零基础学习挖掘PHP网站漏洞

教程介绍 本套课程,分为三个阶段:第一阶段:基础篇 学习PHP开发的基础知识,对PHP常见的漏洞进行分析,第二阶段:进阶篇 实战PHP漏洞靶场,了解市面上的PHP主流网站开发技术,并对市面上…

RocketMQ 流数据库解析:如何实现一体化流处理?

作者:林清山(隆基) 前言: 从初代开源消息队列崛起,到 PC 互联网、移动互联网爆发式发展,再到如今 IoT、云计算、云原生引领了新的技术趋势,消息中间件的发展已经走过了 30 多个年头。 目前&a…

AI+云平台|全闪云底座迎战

AI融万物之势席卷而来 人工智能(Artificial Intelligence),英文缩写为AI。它是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。 行业特点 AI场景中80%以上是小文件,以非结构化数据为…

vue 隐藏导航栏和菜单栏,已解决

初始效果: 效果: 出现问题: 解决方法:

使用docker-compose搭建wordpress博客

1、从远程仓库拉取worldpress镜像到本地 2、新建一个项目,然后在新建的项目目录里面新建一个docker-compose.yml模版文件。 3、编写docker-compose.yml文件 4、docker-compose up 运行项目。 5、在浏览器测试 使用docker-compose搭建wordpress博客实验成功。

配置wss和隐藏端口号(WebSocket通信)

修改宝塔面板配置文件: 添加这几行代码: location /wss{proxy_pass http://127.0.0.1:23481; # 根据自己的socket端口号修改proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "Upgrade";proxy_s…

全网最详细的 Ubuntu 18.04 安装Livox mid-360驱动,测试 fast_lio2

目录 一、前言 二、依赖的环境 三、 安装Livox-SDK2,fast_lio2 和 livox_ros_driver2 (1) 安装Livox-SDK2 (2) 安装 fast_lio2 和 livox_ros_driver2 四、mid-360 设备硬件设置 五、运行设备 六、topic信息查看 一、前言 Livox mid-360需要使用Livox-SDK2…

【OceanBase OBCP题目解析17】关于OceanBase事务引擎一致性特点,描述正确的是

本文为云贝教育郭一军(微信:guoyJoe)原创,请尊重知识产权,转发请注明出处,不接受任何抄袭、演绎和未经注明出处的转载。 关于OceanBase事务引擎一致性特点,描述正确的是 ? A. 保证…

海外媒体宣发:企业出海最有“范儿”的几大媒体

1. 雅虎财经(Yahoo Finance) 雅虎(英文名称:Yahoo,NASDAQ:YHOO)是美国著名的互联网门户网站,也是20世纪末互联网奇迹的创造者之一。其服务包括搜索引擎、电邮、新闻等,业…

【面试经典150 | 动态规划】零钱兑换

文章目录 Tag题目来源解题思路方法一:动态规划 写在最后 Tag 【动态规划】【数组】 题目来源 322. 零钱兑换 解题思路 方法一:动态规划 定义状态 dp[i] 表示凑成总金额的最少硬币个数。 状态转移 从小到大枚举要凑成的金额 i,如果当前…

详解ARP攻击原理、类型、机制、欺骗主机、仿冒网关、泛洪攻击,以及网络攻击中如何快速判断客户端是否存在恶意连接?

详解ARP攻击原理、类型、机制、欺骗主机、仿冒网关、泛洪攻击,以及网络攻击中如何快速判断客户端是否存在恶意连接? ARP攻击(Address Resolution Protocol attack)是一种网络攻击技术,它利用了ARP协议的设计缺陷来实施攻击。ARP是网络协议中用于将网络层的IP地址解析为链路…

舵机烧录

舵机烧录 一、硬件连接1、准备物资2、连接(1)舵机线一侧连接舵机控制板,另一侧连接舵机(2)老安卓线一侧连接舵机控制板,一侧连接电脑(3)接上低压电池 二、软件使用1、打开舵机烧录软…

表格中的状态类型值(tag)

一&#xff1a;数字转换为简单的中文值 ** 不用转换直接用find()方法&#xff1a;在statusList里找&#xff1b; **lastHandleCode是对应的获取到的每行数据的code值&#xff1b; vue: <el-table-column label"执行状态" align"center"><templat…

Vmware虚拟机无法用root直连说明

Vmware虚拟机无法用root直连说明 背景目的SSH服务介绍无法连接检查配置 背景 今天在VM上新装了一套Centos-stream-9系统&#xff0c;网络适配器的连接方式采用的是桥接&#xff0c;安装好虚拟机后&#xff0c;在本地用ssh工具进行远程连接&#xff0c;ip、用户、密码均是成功的…

【Java程序设计】【C00384】基于(JavaWeb)Springboot的民航网上订票系统(有论文)

【C00384】基于&#xff08;JavaWeb&#xff09;Springboot的民航网上订票系统&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 博主介绍&#xff1a;java高级开发&#xff0c;从事互联网行业六年&#xff0c;已经做了六年的毕业设计程序开发&#x…