抽象类和接口1

news2024/11/15 4:06:14

目录

🌤️抽象类概念 

🌤️抽象类语法

🌤️抽象类的作用 

⛅接口的概念

⛅接口的语法

⛅接口的使用

⛅接口的特性

.......


🌤️抽象类概念 

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

🌤️抽象类语法

1. 抽象类的方法使用abstract修饰类,没有具体的实现;

2.抽象类当中可以包含普通类所能包含的成员;

3.抽象类不能被实例化(new),所以他存在的最大意义就是被继承

//Error:(30,23) java: Shape是抽象的;无法实例化

4.如果一个普通类继承了一个抽象类,此时必须重写抽象类当中的方法;

5.如果1个抽象类A继承了1个抽象类B,此时A不需要重写B当中的抽象方法,但如果有人继承A,则需要重写;

6.抽象方法不能是private的;(因为抽象方法就是用来重写的,你都私有了还咋重写

abstract class Shape{

        abstract private void draw();

}

//编译报错

Error:(4,27) java:非法的修饰符访问组合:abstrat和private

7.final,static 和abstract是不能共存的,因为抽象方法要被子类重写   

8.抽象类必须被继承,并且继承后子类要重写父类的抽象方法,否则子类也是抽象类,必须使用abstract修饰,

9.抽象类中不一定包含抽象方法,但是抽象方法的类一定是抽象类;

10.抽象类当中可以有构造方法,是为了子类直接调用,来初始化抽象类当中的成员。

🌤️抽象类的作用 

很多语法的存在就是为了预防出错,例如:final,创建的用户不去修改,不就相当于常量了,但是加上final能够在不小心误修改的时候让编译器及时提醒我们,从而充分利用编译器的校验,在实际开发中是非常必要的!

抽象类本身不能被实例化,要想使用,只能创建该抽象类的子类,然后让子类重写抽象类中的方法。实际工作不由父类完成,有子类完成,那麽此时如果不小心用成父类了,使用普通编译器是不会报错的,但是父类就会在实例化时候提示错误,让我们尽早发现问题。 

⛅接口的概念

接口可以看成是多个类的公共规范,是一种引用数据类型。

⛅接口的语法

1.接口的定义方式与类基本相同,将class关键字换成interface关键字,就定义了一个接口;

public inerface 接口名称{
    //抽象方法
    public abstract void method1();//public abstract 是固定搭配,可以不写
    public void method2();
    abstract void method3();
    void method4();
    //接口中上述方法都是抽象写法,更推荐写法4.
}

⛅接口的使用

🌩️必须有一个 实现类 来 实现 该接口,实现接口中所有抽象方法

public class 类名 implements 接口名{
    //....
}

注意:子类和父类是extends关系,类与接口是implements关系。 

⛅接口的特性

1.接口是一种引用类型,但不能直接new接口对象;

2.接口中每一个方法都是public的抽象方法,即接口中的方法会被隐式的指定为public abstract.

3.接口中的方法不能在接口中实现,只能在类中实现;

4.重写接口中的方法时,不能使用default(默认)  访问权限修饰;

5.接口中可以含有变量,但是接口中的变量会被指定为public static final变量;

6.接口中不能含有静态代码块和构造方法;

7.接口虽然不是类,但是编译完后字节码文件后缀也是.class;

8.如果类中没有实现接口的所有抽象的方法,则类必须设置成抽象类;

9.jdk8中:接口还可以包含default方法;

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

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

相关文章

上手华为鸿蒙手表gt系列从准备到发布

文章目录1、前期准备2、证书&签名3、编码&发布FQA:问题1:The graphic card OpenGL version is too old for Previewer to work. It must be 3.2 or later. Update the OpenGL driver based on the graphics card model.问题2:编译成HAp,报错 ent…

[UE笔记]延迟与延迟补偿

Lag即延迟,是多人游戏中常会出现的一个现象。lag compensation即延迟补偿,是一种减少延迟对游戏造成影响的技术。 Ping 多个含义 一种指令(用于验证ip地址是否存在或者主机是否正在运行)描述服务器需要多长时间响应客户端的输入…

OpenCV实战——使用邻居访问扫描图像

OpenCV实战——使用邻居访问扫描图像0. 前言1. 图像锐化2. 邻居访问扫描图像3. 锐化滤波器4. 完整代码相关链接0. 前言 在图像处理中,有时需要根据某个像素的相邻像素的值计算该像素位置的值。当这个邻域包括上一行和下一行的像素时,就需要同时扫描图像…

JavaScript高级 浏览器的渲染原理与JavaScript代码执行原理

浏览器的渲染原理1. 网页的解析过程2. 浏览器内核1. V8引擎3. 浏览器渲染过程1. HTML解析2. 生成CSS规则3. 构建Render Tree4. 布局(layout)5. 绘制(Paint)4. 回流和重绘解析1. 回流2. 重绘3. web 性能优化4. 合成和性能优化5. 浏…

剑指offer----C语言版----第六天

目录 1. 用栈实现队列 1.1 题目描述 1.2 栈和队列的基础知识 1.3 思路分析 2. 扩展题目——用队列实现栈 2.1 题目描述 2.2 思路分析 1. 用栈实现队列 原题链接: 剑指 Offer 09. 用两个栈实现队列 - 力扣(LeetCode)https://leetcode.cn/…

数据结构集合框架与大O渐进表示法

作者:爱塔居的博客_CSDN博客-JavaSE领域博主 专栏:数据结构 作者简介:大三学生,希望跟大家一起进步!🌹 博客简介:了解数据结构,学习一些关于数据结构的前置知识 文章目录 目录 文章目…

【论文翻译】Deep Learning for Multi-view Stereo via Plane Sweep: A Survey(2021)

一、论文简述 1. 第一作者:Qingtian Zhu 2. 发表年份:2021 3. 发表期刊:CVPR 4. 关键词:MVS、深度学习、综述 5. 核心思想:读到的第一篇深度MVS的综述,总结的很好,内容涵盖了2021年前的研究…

遗传算法python进阶理解+论文复现(纯干货,附前人总结引路)

遗传算法python进阶理解论文复现(纯干货,附前人总结引路)一、简介和相关概念遗传算法简介相关概念介绍二、与其他智能优化算法的比较蚁群算法粒子群优化算法人工神经网络算法模拟退火算法鱼群算法三、必学知识(站在前人的肩膀上&a…

1214. 波动数列(推公式 + DP)

题目如下: 思路 or 题解: 我们可以设: 第一个数为 xxx d {a, -b} 那后续的数为:xd1x d_1xd1​ , xd1d)2x d_1 d_)2xd1​d)​2 … … xd1d2......dn−1x d_1 d_2 ... ... d_{n - 1}xd1​d2​......dn−1​ 根据题意和上面…

(Java高级教程)第二章Java多线程常见面试题-第三节:线程安全集合类和死锁

文章目录一:线程安全集合类(1)多线程环境下使用ArrayList(2)多线程环境使用队列(3)多线程使用哈希表二:死锁(1)概念(2)死锁产生的四个…

(小程序)会议OA项目-首页

目录 一、FIex布局简介 1.什么是flex布局? 2.flex属性 学习地址: 3.flex弹性布局演示 ① 容器的属性 ⑴ flex-direction属性 ⑵ flex-wrap属性 ⑶ flex-flow ⑷ justify-content属性 ⑸ align-items属性 ⑹ align-content属性 二、轮播图组件m…

微信记录怎么恢复?恢复已删除微信历史记录的4种方式

恢复已删除微信历史记录的4种方式 如何在有/没有备份的情况下在 iPhone 和 Android 上恢复旧的或已删除的微信历史记录,如聊天对话、语音消息、照片、图片和视频剪辑?参考本指南,祝您成功恢复微信数据。 关于微信数据恢复 “说真的&#xf…

容器化技术Docker与任务编排

Docker容器化 Docker简介 传统的Java项目部署需要自己进行打包,redis,nignx等中间件需要安装以及进行很多配置,稍微繁琐,而Docker使用了容器化的技术把这一过程封装为一条指令解决,而这取决于它的架构设计&#xff0c…

数值优化之函数高阶信息

本文ppt来自深蓝学院《机器人中的数值优化》 目录 1 函数高阶信息的介绍 2 函数高阶信息的计算 1 函数高阶信息的介绍 hessian矩阵是对称矩阵,最后一个公式是函数关于0的泰勒展开 负梯度是函数下降的最快方向 注意区分Hessian矩阵与Jacobian矩阵,Hess…

9_4、Java基本语法之System、Math、BigInteger与BigDecimal类的使用

一、System类的使用 1、System类代表系统,系统级的很多属性和控制方法都放置在该类的内部。 该类位于java.lang包。 由于该类的构造器是private的,所以无法创建该类的对象,也就是无法实 例化该类。其内部的成员变量和成员方法都是static的&am…

【算法题解】7. 反转链表

文章目录题目解法一:迭代解题思路代码实现复杂度分析解法二:递归解题思路代码实现复杂度分析题目 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。来自:leetcode 解法一:迭代 解题思路 使用…

广州车展智能卷王:集度ROBO-01的取与舍

作者 | 德新 编辑 | 王博2022年的最后两天,今年最后一个A级车展在广州开幕。由于种种原因,不少车企匆忙备战或者干脆缺席,这届展会不如往届热闹。但也有憋了大招的选手,比如集度。 12月30日上午,集度在一场非常短的发布…

11-内部类and 12-集合初步

文章目录11-内部类链接外部类使用.this 和.new匿名内部类12-集合初步思考1&#xff0c;List<Apple> apples new ArrayList<>();思考2&#xff0c;如何初始化一个collection思考3&#xff0c;Pet关键字思考4&#xff0c;关于ListIterator这个双向迭代器思考5&#…

保护性暂停设计模式

目录 保护性暂停设计模式 获取结果 产生结果 总代码实现 测试 增加超时效果的Guarded suspension get(long timeout) 测试 保护性暂停设计模式 Guarded Suspension 即 保护性暂停; 是一种等待唤醒机制的一种规范 ,也可以理解为使用中设计模式,Java的API很多都按照保护性…

【免费开放源码】审批类小程序项目实战(活动审批端)

第一节&#xff1a;什么构成了微信小程序、创建一个自己的小程序 第二节&#xff1a;微信开发者工具使用教程 第三节&#xff1a;深入了解并掌握小程序核心组件 第四节&#xff1a;初始化云函数和数据库 第五节&#xff1a;云数据库的增删改查 第六节&#xff1a;项目大纲以及制…