当前位置: 首页 > 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;听入职的同学说…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题&#xff1a;map 的 key 可以是什么类型&#xff1f;哪些不可以&#xff1f; 在 Golang 的面试中&#xff0c;map 类型的使用是一个常见的考点&#xff0c;其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

逻辑回归:给不确定性划界的分类大师

想象你是一名医生。面对患者的检查报告&#xff08;肿瘤大小、血液指标&#xff09;&#xff0c;你需要做出一个**决定性判断**&#xff1a;恶性还是良性&#xff1f;这种“非黑即白”的抉择&#xff0c;正是**逻辑回归&#xff08;Logistic Regression&#xff09;** 的战场&a…...

边缘计算医疗风险自查APP开发方案

核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...

FastAPI 教程:从入门到实践

FastAPI 是一个现代、快速&#xff08;高性能&#xff09;的 Web 框架&#xff0c;用于构建 API&#xff0c;支持 Python 3.6。它基于标准 Python 类型提示&#xff0c;易于学习且功能强大。以下是一个完整的 FastAPI 入门教程&#xff0c;涵盖从环境搭建到创建并运行一个简单的…...

DAY 47

三、通道注意力 3.1 通道注意力的定义 # 新增&#xff1a;通道注意力模块&#xff08;SE模块&#xff09; class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...

高频面试之3Zookeeper

高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个&#xff1f;3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制&#xff08;过半机制&#xff0…...

质量体系的重要

质量体系是为确保产品、服务或过程质量满足规定要求&#xff0c;由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面&#xff1a; &#x1f3db;️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限&#xff0c;形成层级清晰的管理网络&#xf…...

TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案

一、TRS收益互换的本质与业务逻辑 &#xff08;一&#xff09;概念解析 TRS&#xff08;Total Return Swap&#xff09;收益互换是一种金融衍生工具&#xff0c;指交易双方约定在未来一定期限内&#xff0c;基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...

Ascend NPU上适配Step-Audio模型

1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统&#xff0c;支持多语言对话&#xff08;如 中文&#xff0c;英文&#xff0c;日语&#xff09;&#xff0c;语音情感&#xff08;如 开心&#xff0c;悲伤&#xff09;&#x…...

[Java恶补day16] 238.除自身以外数组的乘积

给你一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法&#xff0c;且在 O(n) 时间复杂度…...