当前位置: 首页 > news >正文

Java宝典-抽象类和接口

目录

  • 1. 抽象类
    • 1.1 抽象类的概念
    • 1.2 抽象类的语法
    • 1.3 抽象类的特点
  • 2. 接口
    • 2.1 接口的概念
    • 2.2 接口的语法
    • 2.3 接口的特点
    • 2.4 实现多个接口
    • 2.5 接口的继承
  • 3. 接口使用案例

铁汁们好,今天我们学习抽象类和接口~

1. 抽象类

1.1 抽象类的概念

什么是抽象类?在面向对象中,如果一个类中的信息并不能完整地描述一个对象,这样的类就是抽象类,拿我们之前的例子:
在这里插入图片描述

Dog类和Cat类继承了Animal类,Animal中有eat方法,但是猫除了吃,还能抓老鼠,如果在Animal中加上抓老鼠的方法,那么狗继承了Animal,也就是说狗也能抓老鼠,这显然有点不现实,所以Animal并不能完整的描述一个对象,此时我们可以把它设计成抽象类,那么如何设计?

1.2 抽象类的语法

当一个类被abstract关键字修饰时,这个类就是抽象类

abstract class Animal{//...
}

注意事项:
1.抽象类中可以包含普通的方法和属性,也可以包含构造方法
2.如果一个方法被abstract修饰,表示该方法是抽象方法,抽象方法不能有具体的实现,如

abstract class Animal{public abstract void func();
}

1.3 抽象类的特点

抽象类有以下特点:

  1. 抽象类不能实例化:不能通过new来进行实例化
Animal animal = new Animal();
//错误的,抽象类不能实例化
  1. 抽象类中的抽象方法不能是private修饰的

  2. 抽象类中的抽象方法不能有具体实现,是因为抽象类的作用主要是被继承,子类需要重写抽象类中的抽象方法

abstract class Animal{public abstract void func(){}//错误的,花括号就表示这个方法有具体实现
}
  1. 抽象方法不能是final和static修饰的(因为要被子类重写)
  2. 抽象类中可以没有抽象方法,但是抽象方法一定是在抽象类当中才能出现

2. 接口

2.1 接口的概念

接口是啥?在java中,可以认为是很多个类的公共规范,接口是一种引用数据类型.比如USB接口,安卓充电器接口,这些接口都是统一大小的,只要符合规范,大家都能使用它.

2.2 接口的语法

在java中,接口的定义和类的定义格式比较类似,将class替换成interface关键字即可

public interface 接口名{
//....
}

2.3 接口的特点

  1. 接口也不能实例化
  2. 接口中的方法都是抽象方法,是被public abstract修饰的,不能被其他修饰符修饰
  3. 接口中的方法不能有具体实现,只有加了default或者static的方法才能实现
    例如:
interface IA {static void fun1() {System.out.println("static");}default void fun2() {System.out.println("default");}
}
  1. 接口中的成员变量默认是public static final修饰的,所以必须赋初始值
  2. 接口中的方法和变量一般不加修饰符,这样代码更加美观,清晰
interface IA {int A = 10;void func();
}
  1. 接口中不能出现静态代码块/构造方法/实例代码块
  2. 重写接口中的方法时,重写的方法只能是public的
  3. 当一个类需要实现某个接口时,使用implements关键字,而且这个类必须重写接口的方法
interface IA {int A = 10;void func();
}
class A implements IA{@Overridepublic void func() {}
}

2.4 实现多个接口

java中不能有多继承(一个类继承多个类),但是一个类可以实现多个接口,接口很好的解决了java不能多继承这个问题

interface IA {//...
}interface IB {//...
}class A implements IA, IB {//...
}

2.5 接口的继承

接口之间也可以继承,接口之间的继承同样使用extends

interface IA {//...
}interface IB extends IA {//...
}

3. 接口使用案例

父类Animal(抽象类)

public abstract class Animal {protected String name;protected int age;public Animal(String name, int age) {this.age = age;this.name = name;}
}

IFly接口

public interface IFly {void Flying();
}

IRunning接口

public interface IRunning {void Running();
}

子类(实现了IFly, IRunning接口,并且重写了接口中的方法)

public class Duck extends Animal implements IFly, IRunning {public Duck(String name, int age) {super(name, age);}@Overridepublic void Flying() {System.out.println(this.name + "正在飞");}@Overridepublic void Running() {System.out.println(this.name + "正在跑");}
}

相关文章:

Java宝典-抽象类和接口

目录 1. 抽象类1.1 抽象类的概念1.2 抽象类的语法1.3 抽象类的特点 2. 接口2.1 接口的概念2.2 接口的语法2.3 接口的特点2.4 实现多个接口2.5 接口的继承 3. 接口使用案例 铁汁们好,今天我们学习抽象类和接口~ 1. 抽象类 1.1 抽象类的概念 什么是抽象类?在面向对象中,如果一…...

6. Gin集成redis

文章目录 一:连接Redis二:基本使用三:字符串四:列表五:哈希六:Set七:管道八、事务九:示例 代码地址:https://gitee.com/lymgoforIT/golang-trick/tree/master/14-go-redi…...

DxO PureRAW:赋予RAW图像生命,打造非凡视觉体验 mac/win版

DxO PureRAW 是一款专为RAW图像处理而设计的软件,旨在帮助摄影师充分利用RAW格式的优势,实现更加纯净、细腻的图像效果。该软件凭借其强大的功能和易于使用的界面,成为了RAW图像处理领域的佼佼者。 DxO PureRAW 软件获取 首先,Dx…...

【MySQL | 第四篇】区分SQL语句的书写和执行顺序

文章目录 4.区分SQL语句的书写和执行顺序4.1书写顺序4.2执行顺序4.3总结4.4扩充&#xff1a;辨别having与where的异同&#xff1f;4.5聚合查询 4.区分SQL语句的书写和执行顺序 注意&#xff1a;SQL 语句的书写顺序与执行顺序不是一致的 4.1书写顺序 SELECT <字段名> …...

服务器又被挖矿记录

写在前面 23年11月的时候我写过一篇记录服务器被挖矿的情况&#xff0c;点我查看。当时是在桌面看到了bash进程CPU占用异常发现了服务器被挖矿。 而过了几个月没想到又被攻击&#xff0c;这次比上次攻击手段要更高明点&#xff0c;在这记录下吧。 发现过程 服务器用的是4090…...

嵌入式学习day34 网络

TCP包头: 1.序号:发送端发送数据包的编号 2.确认号:已经确认接收到的数据的编号(只有当ACK为1时,确认号才有用) TCP为什么安全可靠: 1.在通信前建立三次握手连接 SYN SYNACK ACK 2.在通信过程中通过序列号和确认号保障数据传输的完整性 本次发送序列号:上次…...

欧科云链:角力Web3.0,香港如何为合规设线?

在香港拥抱Web3.0的过程中,以欧科云链为代表的合规科技企业将凸显更大重要性。 ——据香港商报网报道 据香港明报、商报等媒体报道&#xff0c;港区全国政协兼香港选委界立法会议员吴杰庄在日前召开的全国两会上提出在大湾区建设国际中小企业创新Web3融资平台等提案&#xff0…...

Android SDK2 (实操三个小目标)

书接上回&#xff1a;Android SDK 1&#xff08;概览&#xff09;-CSDN博客 今天讲讲三个实际练手内容&#xff0c;用的是瑞星微的sdk。 1 实操编译Android.bp 首先还是感叹下&#xff0c;现在的系统真的越搞越复杂&#xff0c;最早只有gcc&#xff0c;后面多了make&#xf…...

数字编码与字符编码:解锁编程世界的基石

在计算机的世界里&#xff0c;一切信息都是以数字的形式存在。但是&#xff0c;你有没有想过&#xff0c;我们是如何在这个由0和1构成的数字世界中表示复杂的信息&#xff0c;如文本、图像和声音的呢&#xff1f;本篇文章将带你深入探索数字编码与字符编码的奥秘&#xff0c;它…...

C语言-写一个简单的Web服务器(一)

基于TCP的web服务器 概述 C语言可以干大事&#xff0c;我们基于C语言可以完成一个简易的Web服务器。当你能够自行完成web服务器&#xff0c;你会对C语言有更深入的理解。对于网络编程&#xff0c;字符串的使用&#xff0c;文件使用等等都会有很大的提高。 关于网络的TCP协议在…...

MySQL底层原理

1. 请解释MySQL的逻辑架构和物理架构。 MySQL的逻辑架构和物理架构涉及到多个层面&#xff0c;包括网络连接、服务处理、存储引擎以及数据存储等部分。具体如下&#xff1a; 逻辑架构&#xff1a; 连接层&#xff08;Connection Layer&#xff09;&#xff1a;客户端通过TCP…...

复盘-word

word-大学生网络创业交流会 设置段落&#xff0c;段后行距才有分 word-选中左边几行字进行操作 按住alt键进行选中 word复制excel随excel改变&#xff08;选择性粘贴&#xff09; 页边距为普通页边距定义 ##### word 在内容控件里面填文字&#xff08;调属性&#xff09…...

Vue中的组件:构建现代Web应用的基石

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…...

【从部署服务器到安装autodock vina】

注意&#xff1a;服务器 linux系统选用ubuntu 登录系统&#xff0c;如果没有图形化见面可以先安装图形化界面 可以参考该视频 --> linux安装图形化界面 非阿里云ubuntu 依次执行以下命令 sudo apt-get update sudo apt-get install gnome sudo reboot阿里云ubuntu 需多执…...

如何使用ArcGIS Pro进行坡度分析

坡度分析是地理信息系统中一种常见的空间分析方法&#xff0c;用于计算地表或地形的坡度&#xff0c;这里为大家介绍一下如何使用ArcGIS Pro进行坡度分析&#xff0c;希望能对你有所帮助。 数据来源 教程所使用的数据是从水经微图中下载的DEM数据&#xff0c;除了DEM数据&…...

Vue3.2 + vue/cli-service 打包 chunk-vendors.js 文件过大导致页面加载缓慢解决方案

chunk-vendors.js 是/node_modules 目录下的所有模块打包成的包&#xff0c; 但是这包太大导致页面加载很慢&#xff08;我的都要3-4秒了&#xff09;&#xff0c; 这个时候就会出现白屏的情况 解决方案 1、compression-webpack-plugin 插件解决方案 1&#xff09;、安装 npm …...

Java学习笔记NO.18

T1.理工超市 &#xff08;1&#xff09;题目描述 编写一个程序&#xff0c;设计理工超市功能菜单并完成注册和登录功能的实现。显示完菜单后&#xff0c;提示用户输入菜单项序号。当用户输入<注册>和<登录>菜单序号时模拟完成注册和登录功能&#xff0c;最后提示…...

【JVM】聊聊垃圾回收之三色标记算法

在垃圾收集器 CMS中存在四个阶段&#xff0c;初始标记、并发标记、重新标记、并发清理。 那么在并发标记中由于没有STW&#xff0c;业务程序和GC程序是并发执行的&#xff0c;那么是如何实现对象的并发标记的。 并发垃圾回收 并发标记其实是一个宏观的过程&#xff0c;仍然需…...

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:Image)

Image为图片组件&#xff0c;常用于在应用中显示图片。Image支持加载PixelMap、ResourceStr和DrawableDescriptor类型的数据源&#xff0c;支持png、jpg、jpeg、bmp、svg、webp和gif类型的图片格式。 说明&#xff1a; 该组件从API Version 7开始支持。后续版本如有新增内容&am…...

华为OD面试分享8(2024年)

个人情况&#xff1a; 23毕业&#xff0c;24一战跨考ustc&#xff0c;觉G。 211本&#xff0c;目标院校。 知识储备&#xff1a; 仅限408 用leetcode刷过408排序算法 0项目经验 时间线&#xff1a; 23.12.27 投的简历。当时啥也不会啥也不知道&#xff0c;听入职的同学说…...

Meta 打造 AI 版扎克伯格与员工交流,扎克伯格亲力亲为 AI 项目,股价涨 7%

Meta 正打造人工智能版马克扎克伯格用于和员工交流&#xff0c;该工作处于早期阶段。同时&#xff0c;扎克伯格在人工智能发展上亲力亲为&#xff0c;Meta 发布新模型后股价上涨 7%。打造 AI 版扎克伯格作为重塑公司为人工智能核心的一部分&#xff0c;Meta 正在打造人工智能版…...

外汇流动性和市场情绪指标MT4、MT5

使用外汇流动性指标交易 外汇流动性指标通过帮助识别关键市场水平来支持贸易规划&#xff0c;包括&#xff1a; 支撑与阻力位 –根据交易密度显著或反复反应的区域确定。供需区——通过被称为买方和卖方流动性区的区域突出显示&#xff0c;这些区域暗示了可能存在未成交的买卖…...

SITS2026多模态搜索性能压测报告首度公开(含Query延迟<120ms的GPU资源配比公式)

第一章&#xff1a;SITS2026案例&#xff1a;电商多模态搜索应用 2026奇点智能技术大会(https://ml-summit.org) 在SITS2026技术实践峰会上&#xff0c;某头部电商平台展示了其新一代多模态搜索系统——SITS-Search&#xff0c;该系统支持文本、商品图、手绘草图及语音指令的联…...

微服务全套

微服务导学服务拆分如何把单一的大项目如何拆分成一个个小项目远程调用每个小的单体项目&#xff0c;在物理上是隔绝开的&#xff0c;使用的是不同的Tomcat&#xff0c;有独立的运维和部署&#xff0c;互相之间如何调用就涉及到了远程调用的知识学习微服务的最好方法是尝试着把…...

台达DVP PLC与三台变频器通讯程序详解:昆仑通态接线方式、设置指南及功能实现(频率设定、启...

台达DVP PLC与3台台达VFD-M变频器通讯程序 程序带注释&#xff0c;并附送昆仑通态有接线方式&#xff0c;设置。 器件&#xff1a;台达DVP ES系列的PLC&#xff0c;3台台达VFD M系列变频器&#xff0c;昆仑通态 功能&#xff1a;实现频率设定&#xff0c;启停控制&#xff0c;实…...

Mysql(7)子查询

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录子查询select中嵌套子查询select中嵌套子查询where或having中嵌套子查询exists型子查询from中嵌套子查询update中嵌套子查询delete中嵌套子查询使用子查询复制表结构…...

你的企业是不是也在被这些管理难题拖垮?

早上刚到办公室&#xff0c;销售总监就冲进来拍桌子&#xff0c;说上周的急单生产部拖了三天还没排期。转头生产经理找过来&#xff0c;抱怨采购部原料供应不及时&#xff0c;生产线天天停半天。采购经理委屈巴巴&#xff0c;说财务卡着预算&#xff0c;好几个优质供应商都要终…...

孩子 KET 口语总丢分?这份指南帮你搞定

很多家长陪孩子练 KET 口语时&#xff0c;最怕遇到的场面就是“挤牙膏”。你问&#xff1a;“What’s your favourite school subject?”孩子答&#xff1a;“English.”你等了半天&#xff0c;没了。这种回答&#xff0c;在 KET 评分标准里是很难冲刺高分的。其实&#xff0c…...

qy2格式怎么转成MP3?7种方法一次讲清楚(附详细步骤)

很多人在使用 爱奇艺 下载音频或缓存内容时&#xff0c;可能会遇到一种比较少见的格式——QY2。这种格式属于平台专用的加密音频文件&#xff0c;主要用于版权保护&#xff0c;在官方APP内可以正常播放&#xff0c;但一旦导出到其他设备&#xff0c;就会出现无法识别、无法播放…...

基于LLM的高校招生智能问答系统

一、 研究目的 本研究旨在利用大语言模型(LLM)强大的自然语言理解与生成能力,解决当前高校招生咨询工作中存在的痛点与瓶颈。随着高等教育普及化程度的加深,每年招生季高校需面对海量、重复且时效性极强的咨询需求。传统的人工客服模式受限于人力成本、工作时间及答复一致…...