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 + "正在跑");}
}

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

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

相关文章

DataGrip 连接 Centos MySql失败

首先检查Mysql是否运行: systemctl status mysqld , 如果显示没有启动则需要启动mysql 检查防火墙是否打开,是否打开3306的端口 sudo firewall-cmd --list-all 如果下面3306没有打开则打开3306端口 publictarget: defaulticmp-block-inver…

力扣同类题:重排链表

很明显做过一次 class Solution { public:void reorderList(ListNode* head) {if(!head||!head->next)return;ListNode *fasthead,*lowhead;ListNode *prenullptr,*curnullptr,*nextnullptr;while(fast->next!nullptr){fastfast->next;if(fast->next)fastfast->…

Unity性能优化篇(十二) 音频优化之导入音频后的属性设置

Unity支持后缀为.wav、.ogg、.mp3的音频文件,但建议使用.wav,因为Unity对它的支持特别好。 注意:Unity在构建项目时总是会自动重新压缩音频文件,因此无需刻意提前压缩一个音频文件再导入Unity,因为这样只会降低该音频文…

Jmeter---非GUI命令行的执行生成报告、使用ant插件执行接口测试脚本生成报告

非GUI命令行的执行 1. 在jmx后缀的文件目录下打开命令行 2. 运行: jmeter -n -t filename.jmx(-n : 非GUI的方式 -t: 指定需要执行的脚本) 生成jtl报告 运行: jmeter -n -t filename.jmx -l result_filename.jtl 生成html报…

前端将html导出pdf文件解决分页问题

这是借鉴了qq_251025116大佬的解决方案并优化升级完成的,原文链接 1.安装依赖 npm install jspdf html2canvas2.使用方法 import htmlToPdffrom ./index.jsconst suc () > {message.success(success);};//记得在需要打印的div上面添加 idlet dom document.que…

数字化转型导师坚鹏:科技金融政策、案例及营销创新

科技金融政策、案例及营销创新 课程背景: 很多银行存在以下问题: 不清楚科技金融有哪些利好的政策? 不知道科技金融有哪些成功的案例? 不知道科技金融如何进行营销创新? 课程特色: 以案例的方式解…

力扣刷题Days15-136. 只出现一次的数字(js)

目录 1,题目 2,代码 2.1利用map()数据结构 2.2利用Set()数据结构 2.3位运算 3,学习与总结 3.1位运算 1,题目 给你一个 非空 整数数组 nums ,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元…

数字图像处理—python

pycahem终端也可以下载库,我只会用终端下载,用的镜像网站 pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple pip install scikit-image -i https://pypi.tuna.tsinghua.edu.cn/simple. pip install matplotlib -i https://pypi.tuna.tsinghua.edu.c…

GO: 快速升级Go版本

由于底层依赖升级了,那我们也要跟着升,go老版本已经不足满足需求了,必须要将版本升级到1.22.0以上 查看当前Go版本 命令查看go版本 go version[rootlocalhost local]# go version go version go1.21.4 linux/amd64 [rootlocalhost local]# …

RHCE——一、OpenEuler22.03安装部署及例行性任务

RHCE 一、OpenEuler22.03安装部署及例行性任务 一、网络服务1.准备工作2、RHEL9操作系统的安装部署3、配置并优化OpenEuler22.034、网络配置实验:修改网络配置 二、例行性工作1、 单一执行的例行性任务:at(一次性)at命令详解 2、循…

学习笔记。。。

1.字符串的拼接 1.sprintf() 往字符串的前面或中间、后面拼接一个字符串。 2.strncpy()用来复制字符串的前n个字符 //dest为目标数组,src为源数组,n为要复制的字符个数 2.char* My_strncpy(char* dest, const char* src, int n) 3.char *strcat(ch…

知名比特币质押协议项目Babylon确认参加Hack.Summit()2024区块链开发者大会

Babylon项目已确认将派遣其项目代表出席2024年在香港数码港举办的Hack.Summit()2024区块链开发者大会。作为比特币生态的领军项目,Babylon积极参与全球区块链领域的交流与合作,此次出席大会将为其提供一个展示项目进展、交流技术与创新思路的重要平台。B…

【数据库-黑马笔记】基础-SQL

本文参考b站黑马数据库视频,总结详细全面的笔记 ,可结合视频观看1~26集 MYSQL 的基础知识框架如下 目录 一、MYSQL概述 1、数据库相关概念 2、MYSQL的安装及启动 二、SQL 1、DDL【Data Defination】 2、DML【Data Manipulation】 ①、插入 ②、更新和删除 3、 DQL【Data…

理解文件系统

个人主页:Lei宝啊 愿所有美好如期而遇 磁盘 磁盘的机械构成 磁盘的物理存储 每个磁盘的盘面,磁头,扇面,扇区都有唯一的编号,同时,一个扇区的大小是512字节(扇区的大小也有4KB的,或…

【C++庖丁解牛】模版初阶

📙 作者简介 :RO-BERRY 📗 学习方向:致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 📒 日后方向 : 偏向于CPP开发以及大数据方向,欢迎各位关注,谢谢各位的支持 目录 1. 泛型编程2. 函数模…

ssGSEA -- 学习记录

文章目录 biref统计学原理其他注意事项代码实现部分 biref 前情提要链接: https://blog.csdn.net/jiangshandaiyou/article/details/136536349 https://blog.csdn.net/jiangshandaiyou/article/details/134457515 相比起GSA,GSEA不再关注于差异基因&…

打卡--MySQL8.0 一(单机部署)

一路走来,所有遇到的人,帮助过我的、伤害过我的都是朋友,没有一个是敌人。如有侵权,请留言,我及时删除! MySQL 8.0 简介 MySQL 8.0与5.7的区别主要体现在:1、性能提升;2、新的默认…

【C++】三大特性之继承

1 继承的概念及定义 1.1 继承的概念 继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展、增加功能,这样产生新的类,称派生类(或子类)。而被继承的…

.NetCore6.0实现ActionFilter过滤器记录接口请求日志

文章目录 目的实现案例:一.首先我们新建一个WebApi项目二.配置 appsettings.json 文件,配置日志存放路径三.创建 Model 文件夹,创建AppConfig类和ErrorLog类1.在AppConfig类中编写一个GetConfigInfo方法获取配置文件中的值2.在ErrorLog类中&a…

磁盘无法访问?别慌,这里有解决之道!

电脑中,那块储存着重要文件与数据的磁盘,突然之间无法访问,是不是让你感到惊慌失措?面对这样的突发状况,很多人可能会感到手足无措。但别担心,本文将为你解析磁盘无法访问的原因,并提供实用的数…