抽象类与接口

抽象类:

        父类某些方法需要声明,但又不确定如何实现,可将其声明抽象方法,
    【抽象类主要是为了防止创建父类对象】
    抽象类与抽象方法
        抽象方法没有方法体
        类中有抽象方法,类必须声明为抽象类
        一般来说,抽象类会被继承,其子类实现抽象方法
        抽象类在框架与设计模式用的多
    注意:【面试】
        1 抽象类不能创建对象/不能被实例化
        2 抽象类可以没有抽象方法,抽象类还是类
        3 抽象方法必须在抽象类中,抽象方法不能有方法体
        3 abstract只能修饰类与方法,不能修饰属性或其他
        4 继承抽象类,其子类必须实现所有抽象方法,否则其也要是抽象类了
        5 【抽象方法/抽象类 不能被private,final,static修饰,因为这些关键字与是与重写违背的】

接口:

        interface 接口名{
        属性
        方法
    }
    jdk7之前接口中所有方法都没有方法体,都是抽象方法
    jdk7及之后接口可以有静态方法,默认方法(default) (实现后的方法)
    
    1 接口中抽象方法可以省略abstract
    2 实现一个接口必须重写所有抽象方法
    3 抽象类只能单继承,但是不重写还有此方法
    4 接口多实现,实现一个接口必须重写所有抽象方法
    
    抽象类与接口 像是  代码块与构造方法
    【抽象类主要是为了防止创建父类对象】
    【接口主要是为了规范,还是多实现的,没有限制】
    【实现与继承一样,子类也可以用父类的所有东西】
    
    应用:
        编写3个类,分别完成对数据库mysql,Oracle,db2的连接 里面的方法名不一样
        调用时非常麻烦
        用接口规范其方法名就行
        【接口主要是为了规范,还是多实现的,没有限制】
        
    注意:
        1 接口不能被实例化
        2 接口中所有方法都是public的?【不对的,default】,抽象方法可以不用abstract修饰(证明不能是默认,可以看子类实现的方法,子类实现方法是默认会报错)
        3 类实现接口要实现所有抽象方法
        4 抽象类实现接口,可以不实现所有抽象方法
        5 一个类可实现多接口(方法重名无所谓,反正我实现一个就行)(方法调用继承优先于接口实现)
        6 接口的属性只能是public static fianl的,而且必须要初始化(public static fianl写法上可省略) 接口名.属性名访问
            证明:static:接口名称直接点属性就能用   final 不能再次赋值        protected/private直接报错,默认用不同包访问证明
        7 接口不能继承类,但可以【继承】多接口
        8 接口修饰符只能是public或默认,与类一样
        9 接口中可以没有抽象方法
    【理解】继承与实现区别    【实现这种机制是对于Java单继承机制的一种补充】
        老猴子与小猴子是继承关系
        小猴子想要飞翔,就要实现/学习鸟的功能        
        小猴子想要游泳,就要实现/学习鱼的功能
        只要继承了类,自然就会使用父类方法(即使不重写)(很自然的行为)(猴子会爬树,小猴子会爬树)【父亲】
        实现是要重写接口方法的(有一个学习的过程)                                                    【师傅】
        【继承主要是解决代码复用性与可维护性问题】  【严谨,需要is-a】
        【接口主要是解决 设计规范问题】                【灵活,like-a就行】    【接口一定程度上解耦:接口规范性+动态绑定机制】
                                                                                (集合的源码常用)
                                                                                
    接口的多态特性:
        1 接口类型可以指向 实现类的对象  向上转型
        2 多态参数   向上转型
        3 多态数组     接口数组    调用特有要向下转型
        【4 多态传递特性】
            接口可以继承接口,继承后,本接口实现类不仅仅可以向上转型为直接实现的接口,还可以向上转型为父接口
            
        类继承类同时实现接口
            调用的变量在继承的类与接口中都有,会报错(区分:继承类的变量用super,接口的变量用接口名点)this用本类,没有用局部变量

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

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

相关文章

java开发之个微机器人的实现

简要描述: 二次登录 请求URL: http://域名地址/secondLogin 请求方式: POST 请求头Headers: Content-Type:application/jsonAuthorization:login接口返回 参数: 参数名必选类型说明wcId…

k8s之Pod常用命令详解、镜像拉取策略(imagePullPolicy)

常用命令 kubectl get pod #查看默认命名空间下所有pod kubectl describe pod podname #获取默认命名空间下POD详情# 如果要查看制定命名空间则使用 -n nsname kubectl get pod -n ns kubectl describe pod podname -n ns# 以YAML格式提供比 kubectl describe pod 更加详细的信…

【每日一题】从二叉搜索树到更大和树

文章目录 Tag题目来源题目解读解题思路方法一:中序遍历的反序方法二:后缀数组 写在最后 Tag 【中序遍历】【二叉树】【2023-12-04】 题目来源 1038. 从二叉搜索树到更大和树 题目解读 在二叉搜索树中,将每一个节点的值替换成树中大于等于该…

DDR详解

DDR也就是常称的内存在一般使用过程中都是透明的,此文从多方面对DDR进行详解。 DDR训练 高可靠性是系统级芯片SoC重要的质量和性能要求之一。SoC的复杂在于各个IP模块都对其产生至关重要的影响。从芯耀辉长期服务客户的经验来看,在客户的SoC设计中&…

根文件系统lib库添加与初步测试

一. 简介 我们在编译 busybox源码时,选择的是动态编译,所以,制作生成的 根文件系统中/bin或 /sbin目录下软件运行时会调用到一些库文件的。库文件就是交叉编译器的库文件。 前面我们编译 busybox源码时,选择动态编译&#xff0…

NPS内网穿透教程

1.简介 nps是一款轻量级、高性能、功能强大的内网穿透代理服务器。目前支持tcp、udp流量转发,可支持任何tcp、udp上层协议(访问内网网站、本地支付接口调试、ssh访问、远程桌面,内网dns解析等等……),此外还支持内网ht…

【python爬虫】设计自己的爬虫 2. 数据保存封装 mongodb,mysql和elasticsearch

mongodb, mysql和elasticsearch 功能较相似,所以打算用一套接口将它们封装起来 基类StorageBase 如下: class StorageBase:def __init__(self, hostNone, portNone, databaseNone, tableNone, locationNone, accountNone, passwordNone,urlNone):self…

安卓1.0明显是基于linux内核开发的,安卓1.0是不是linux套壳?

安卓1.0明显是基于linux内核开发的,安卓1.0是不是linux套壳? 在开始前我有一些资料,是我根据自己从业十年经验,熬夜搞了几个通宵,精心整理了一份「安卓开发资料从专业入门到高级教程工具包」,点个关注&…

141. 环形链表

141. 环形链表 设置一个fast指针,一个slow指针,fast一次走两步,slow一次走一步。如果fast和slow相遇,则说明有环。反之没相遇则无环。 注意快慢指针的while循环条件是fast.next ! null && fast.next.next ! null /*** …

大数据集群增加数据盘,平衡数据盘HDFS Disk Balancer

大数据集群增加数据盘,平衡数据盘HDFS Disk Balancer 官网:https://hadoop.apache.org/docs/r3.3.6/hadoop-project-dist/hadoop-hdfs/HDFSDiskbalancer.html hdfs diskbalancer -execute /system/diskbalancer/nodename.plan.jsonhdfs diskbalancer -q…

StringJoiner使用详解

关于StringJoiner 1.介绍2.源码2.1 属性2.2 方法 3 举例StringJoiner做法3.1 只含间隔符3.2 含间隔符和前后缀3.3 merge合并两个joiner3.4 stringJoiner.setEmptyValue("xxx");3.5 综合举例length()方法 1.介绍 在JDK1.8之后,提供了一个StringJoiner类用来…

简谈oracle数据库的归档模式

一、oracle数据库归档模式简介 Oracle数据库归档模式是一种数据备份和恢复策略,它允许数据库记录所有数据库的更改操作(包括已提交和未提交的事务)并将其存储在归档日志中。这些归档日志可以用于在数据库发生故障时进行恢复,并提供点时间恢复(PITR)的能力。 在Oracle数…

ruoyi-vue 整合netty实现TCP/IP协议数据接收

支持持续接收数、可发送数据、可多端口连接。 废话少说,直接上代码! 如果写的可以,记得点个赞~ import com.alibaba.fastjson.JSON; import lombok.AllArgsConstructor; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; imp…

PHP 刷新缓存区的问题!

PHP流式输出,在Nginx下可以正常刷新缓存区 , 但是在Apache下会等待循环全部执行完,才会刷新!有怎么解决? header(X-Accel-Buffering: no); // Nginx情况下必须加这一行header(Content-type: text/event-stream);header…

【刷题】【力扣牛客】反转链表的五种方式——Java

文章目录 前言方法一:构造新链表(构造新节点)方法二:构造新链表(不构造新节点)方法三:递归方法四:双指针方法五:遍历总结 力扣题目链接:206. 反转链表 牛客题…

IDEA2023找不到 Allow parallel run

我的idea版本:2023.1.4 第一步:点击Edit Configrations 第二步:点击Modify options 第三步:勾选Allow multiple instances 最后点击Apply应用一下 ok,问题解决!

SSM项目实战-登录验证成功并路由到首页面,Vue3+Vite+Axios+Element-Plus技术

1、util/request.js import axios from "axios";let request axios.create({baseURL: "http://localhost:8080",timeout: 50000 });export default request 2、api/sysUser.js import request from "../util/request.js";export const login (…

Mysql日志

文章目录 1. 日志类型2. bin log2.1 写入机制2.2 binlog与redolog对比2.3 两阶段提交 3. 中继日志 1. 日志类型 这 6 类日志分别为: 慢查询日志: 记录所有执行时间超过long_query_time的所有查询,方便我们对查询进行优化。 通用查询日志&am…

在sCrypt网站上铭刻Ordinals

sCrypt发布了一个新的Ordinals铭刻工具,连接Panda Wallet后即可使用。你可以观看我们录制的视频教程,获得更多细节。 铭刻工具同时支持BSV主网(mainnet)和测试网(testnet),你可以在我们的官方网…

手写VUE后台管理系统8 - 配置404NotFound路由

设置404页面 配置路由404页面 配置路由 这里配置了两个路由,一个是主页,另外一个则匹配任意路由显示为404页面。因为只配置了两个路由,如果路径没有匹配到主页,则会被自动导向到404页面,这样就可以实现整站统一的404页…