【Iava】抽象类和接口

news2024/11/15 15:36:31

祝早日驱散阴霾

文章目录

  • 1. 抽象类
    • 1.1 抽象类的概念
    • 1.2 抽象类的使用注意事项
    • 1.3 抽象类的作用
  • 2. 接口
    • 2.1 接口的定义
    • 2.2 接口的使用规则
    • 2.3 创建对象拷贝,实现Cloneable
  • 3. 抽象类和接口的区别


1. 抽象类

1.1 抽象类的概念

抽象类,顾名思义,这是不是一个具体的类,没有实际的功能,只是提供一个模板,由继承它的子类去实现它的功能.
1.用abstract修饰的类为抽象类。
2.抽象类中用abstract修饰的方法为抽象方法。
3.抽象类中也可包含普通数据成员和普通方法和构造方法。
4.抽象类不用非得包含抽象方法,但包含抽象方法的一定是抽象类。他们的关系如下图
在这里插入图片描述

1.2 抽象类的使用注意事项

1.抽象方法不能给出具体实现体,只能规定返回值类型,参数类型.

public abstract void wage();

如下图,抽象方法不能有方法体.必须由继承他的子类去实现.
在这里插入图片描述
2.因为抽象方法必须要允许继承后被重写,所以,抽象方法不能被private和default修饰,也不能由final和static修饰.
3.子类继承了抽象类后,若子类不能重写原抽象类中的所有方法,那么这个子类也是抽象类,需要用absract修饰.
如下图,子类software没能实现speciality中的所有抽象方法,所以,software类也是一个抽象方法,需要abstract修饰.
在这里插入图片描述
4.抽象类不能直接创建实例,如下图,抽象类不能直接实例对象.
在这里插入图片描述

1.3 抽象类的作用

普通父类也能实现类似的功能,那我们为什么要用抽象类呢?
类的实际应用中,是子类去进行实际的功能,但如是不小心用到了父类的实例化对象,编译器也不会报错.所以,使用抽象类可以避免使用父类实例化对象的错误.


2. 接口

2.1 接口的定义

我们日常生活中也有很多接口,例如安卓充电口和苹果充电口,只有符合对应规定的插头也能使用.Java中的接口也是只有符合相关特性的类才能使用对应的接口.

2.2 接口的使用规则

1.定义接口,与定义类的格式类似,只需将类定义格式中的class换成interface即可定义一个接口.如下图所示.
在这里插入图片描述
2.接口类型是引用类型,不能直接new接口对象
3.接口中的方法不能被实现,必须由继承接口的类来实现.如下图所示,接口中的方法不能有方法体.
在这里插入图片描述
4.接口中的方法类型只有public/public abstact两种写法,就算写的是public,也默认成public abstact
5.类继承接口,要用到关键字implements,如下图所示,类bird继承两个类.
在这里插入图片描述
6.接口中可以有变量,此变量被隐形指定为public static final,为一个不可变的常量.
在这里插入图片描述
7.接口中不能有静态代码块和构造方法.
8.类如果继承了多个接口,需要重写所有接口的所有方法,否则,这个类是抽象类.如下图,bird类没能重写所有方法,这个类为抽象类,需要用abstract修饰.
在这里插入图片描述
9.一个类只能继承一个父类,但能继承多个接口
10.接口可以继承多个接口.如下图所示
在这里插入图片描述

2.3 创建对象拷贝,实现Cloneable

public class Dog implements Cloneable{
    public Dog clone(){
        Dog d = null;
        try {
            d = (Dog) super.clone();
        } catch (CloneNotSupportedException e) {
            e.printStackTrace();
        }
        return d;
    }

    public static void main(String[] args) {
        Dog d1 = new Dog();
        Dog d2 = d1.clone();
    }
}

3. 抽象类和接口的区别

种类抽象类接口
继承关键字abstractinterface
结构组成普通类加抽象方法抽象方法加常量
方法权限抽象方法权限是public,普通方法随意只能是public
关系一个抽象类实现可实现多个接口接口可以继承多个接口
子类限制一个子类继承一个抽象类一个子类实现多个接口

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

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

相关文章

四旋翼无人机学习第17节--封装上传github与gitee

0 前言 经过一段时间的绘制,终于绘制完项目所需的封装。为了更好的管理封装,我准备把封装与焊盘上传到github与gitee,方便之后的管理工作。 1 文件上传gitee 注册这里就不作介绍咯。 1、首先点击新建仓库。 2、设置仓库的名称与项目介绍&…

GO语言初始化数据结构的方法你知道吗?

xdm 我是阿兵云原生 使用 golang 进行编码过程中,你们都是如何初始化数据结构的呢 GO 里面提供了 2 个关键字来进行初始化数据结构 newmake 不过有时候我也会直接使用花括号的方式直接就初始化,例如这样: name : []string{"xiaomot…

电源PCB布局要点

本次已常用的集成电源IC芯片TPS 5430.讲解一下布局要求。 在手册中可以看到官方已给出的详细布局。 这是我们原理图设计的TPS 5430。 通过以上了解到了连接关系以及布局要求。那么我们再看看官方要求是如何硬性要求布局的。 总结: 1.输入电容要靠近Vin 管脚 2.电…

图像简单运算

图像运算是以图像为单位对图像进行数学操作,运算对象以像素点为基本单位,运算结果为一幅灰度分布与原图像不同的新图像。 算术运算与逻辑运算 算术运算与逻辑运算中每次只涉及一个空间像素的位置,所以可以”原地操作“(在&#xf…

【微服务笔记02】微服务组件之Eureka常见的几个配置属性及其常见的几个概念

这篇文章,主要介绍微服务组件中Eureka常见的几个配置属性及其常见的几个概念【源代码地址】。 目录 一、Eureka常见配置属性 1.1、instance配置项 1.2、client配置项 1.3、server配置项 二、eureka常见概念 2.1、服务注册 2.2、服务发现 2.3、服务续约 2.4…

CSS常见标签知识回顾

学前端的一点css笔记,参考的是黑马程序员pink老师的教程。 一.行内元素 1.一行可以显示多个 2.宽度核高度默认由内容撑开 3.不可以设置宽高 代表标签: a、span、b、ui、s、strong、ins、em、del 二、行内块元素 1.一行可以显示多个 2.可以设置宽高…

回顾2022年总结

文章目录前言这一年感悟感想成绩新的一年期许前言 2022过的好快,接着我对自己这一年的所做的事情来进行一个汇总和感悟感想总结! 所有博客文件目录索引:博客目录索引(持续更新) 这一年 月份做了什么事1转本备考、Java技术(netty一套课程、…

VisionMaster应用实例——识别锁付孔位

项目背景:相机对法兰盘表面进行拍照,获取法兰盘上16个孔位的位置,通过VisionMaster进行TCP通信,将位置信息发送给机械臂,对这16孔位的螺丝进行拧紧,同时需要根据十字锁付的特点。 思路分析: 1.方…

[oeasy]python0036_牛说_cowsay_小动物说话_asciiart_figlet_lolcat_管道(祝大家新年快乐~)

牛说(cowsay) 回忆上次内容 上次我们研究了shell脚本的编程 并且在shell中实现了 循环语句延迟命令清屏命令python命令figlet命令还能整点什么呢?🤔还想要让小动物报时 cowsay 首先要安装 cowsay sudo apt install cowsay 装完之后 cow 就可以 say 了…

人工智能-逻辑回归

1,逻辑回归介绍 逻辑回归:分类模型 应用场景:广告点击率、是否垃圾邮件 逻辑回归主要用于解决二分类问题 输入: 逻辑回归的输入:线性回归的结果 激活函数:sigmoid函数 回归的结果输入到sigmoid函数中 输…

UE5笔记【十四】漂流者游戏制作【一】地形材质准备

针对游戏的剧情设计:角色流落荒岛,寻找食物和水,等待救援。只有按时找到才能存活。否则游戏失败了。 新建一个第三人称游戏。可以将项目名称命名为《CastAway》 启动Landmass插件 然后启用Water插件。 然后删除场景中不需要的东西。保留荒岛…

DoIP协议从入门到精通——诊断通信

DoIP(Diagnostic on IP)是基于IP(车载通信总线介质)为实现诊断诊断通信搭建通信桥梁的过程。从车辆连接-车辆声明-激活通信,都在前面几篇文章有过分享: 在专栏中可以找到文章! 如下述将DoIP协议内容映射到计算机OSI七层通信模型中,其作用就是将物理层接收到的收据,准…

(十) Docker微服务实战

Docker微服务实战一、IDEA新建一个普通微服务模块二、通过dockerfile发布微服务部署到docker容器2.1、打包模块2.2、编写 Dockerfile以及上传jar包2.3、构建镜像2.4、运行容器一、IDEA新建一个普通微服务模块 建Module docker_boot Pom文件 <?xml version"1.0" e…

2022年技术自媒体经验分享 —— 开始尝试认真做 B站 的一年后的复盘

文章目录前言一、回顾过去1、进驻B站2、进驻知识星球3、做全网最强的算法星球4、付费是道砍二、星球简介1、星主介绍2、星球简介三、星球内容1、九日集训2、付费专栏 - 免费阅读3、每月算法集训4、每日作业5、个人规划6、更优质的朋友圈7、向我提问 - 深思熟虑你的问题8、持续创…

微机原理真题错题整理2018,2019年

目录 2017年 选择 填空题 2018年 选择 填空题 编程题 2017年 选择 1:若一SRAM芯片的容量是10248位&#xff0c;除电源和接地外该芯片的其他引脚最少应为&#xff08;&#xff09; A:23 B:22 C:21 D:20 10242^1010根地址线 8位8根数据线 …

【SV】为什么需要异步复位?同步输入/异步输入、异步复位/同步复位(bad)、异步复位同步释放、同步系统/异步系统

【SV】为什么需要异步复位&#xff1f;同步输入/异步输入、异步复位/同步复位&#xff08;bad&#xff09;、同步系统/异步系统 1. 同步输入/异步输入&#xff08;synchronous and asynchronous inputs in sequential system&#xff09;为什么需要异步复位&#xff1f;1.1 异步…

k8s之基本环境准备

写在前面 本文看下学习k8s需要的基础环境&#xff0c;包括运行环境&#xff0c;docker等。 1&#xff1a;准备linux运行环境 环境&#xff1a;win10 虚拟化工具&#xff1a;VMware-workstation-full-15.1.0 linux&#xff1a;ubuntu-22.04.1-desktop-amd64.iso 。 安装完毕…

6)Django Cookies/Session,中间件,Nginx+uwsgi安装配置

目录 一 Django cookie 与 session Cookies Django 中 Cookie 的语法 Session(保存在服务端的键值对) 工作原理 实例 二 Django中间件 自定义中间件 自定义中间件类的方法 process_request 方法 process_response process_view process_exception 三 Django Nginxu…

【值得收藏】机器学习实战项目汇总(初级、中级、高级)

大家都知道&#xff0c;教科书上所学与实际操作还是有出入的&#xff0c;那关于机器学习有什么好的项目可以实操吗&#xff1f; 这次给大家分享一个涵盖面向初学者&#xff0c;中级专家和专家的23种机器学习项目创意&#xff0c;以获取有关该增长技术的真实经验。这些机器学习…

opencv-python常用函数解析及参数介绍(三)——图像滤波

图像滤波前言1.制作噪声生成椒盐噪声生成高斯噪声2.滤波均值滤波框滤波高斯滤波中值滤波总结前言 很多时候我们能拿到的图片并不是十分干净&#xff0c;有时会有一些噪声&#xff0c;这时我们就应该采用滤波的方式对他进行处理&#xff0c;本文将在一张干净的图片上生成噪声并…