首页 > 其他分享 >抽象类与接口

抽象类与接口

时间:2023-04-21 20:44:44浏览次数:43  
标签:构造方法 子类 接口 实例 抽象类 方法

接口

接口用来描述类应该做什么,而不是指定它们具体应该如何做  主要用于定义规范

一个类可以实现多个接口

接口中所有方法自动是public abstract    不必显示声明

接口不会有实例字段,字段默认添加  public static final 修饰  即常量

接口不能有初始化块、构造器

子类实现接口方法需要显示声明方法的访问属性为public,类的默认访问属性是包可见的,子类如不是抽象类,需要实现接口中全部抽象方法

接口可以继承接口  多继承,不能继承类,级别比类高

jdk8以前,接口不会有实现方法

jdk8以后可以有default修饰的普通实现方法,通过对象调用,重写不需要添加@overwrite,可以有静态的实现方法,通过接口名调用

 

父接口的子类实例不能向无关的子接口强转  视为两个不同分支

eg:接口A的实现类是D,接口E继承A,D的实例仍然不能转换为E的实例,报运行时错误

 

抽象类

主要用于代码重用

定义:

修饰符 abstract 类名{
    //类体
修饰符 abstract  返回值类型 方法名(参数列表)
}
关键字为abstract    抽象类的抽象方法没有方法体:public abstract void test();  不用被实现,必须由子类重写实现且是重写全部抽象方法(强制性要求,普通类不能继承抽象方法,必须重写),如果子类是抽象类则不用强制,因为抽象类中允许出现抽象方法   抽象类中的普通方法可以有方法体:
public   void test(){xxx};

 

抽象类必须被继承使用,不能被直接实例化

抽象类可以有成员变量、构造方法、成员方法,可以用构造方法来初始化属性

允许包含抽象成员

 

有构造方法却不能被实例化?

在抽象类中可以有构造方法,只是不能直接new 抽象类的实例对象,但实例化子类的时候,就会初始化父类,不管父类是不是抽象类都会调用父类的构造方法,初始化一个类会先初始化父类。java中构造器是用来初始化的,不是用来实例化对象的。抽象类中的构造器是用来给成员变量赋值的,供子类使用。

 

异同

不同点:

目的不同:接口定义一组类的执行规范,抽象类为了代码重用

定义关键字不同:接口interface,抽象类abstract

实现或继承的关键字不同:接口用implements来实现,抽象类用extends来继承

访问控制符不同:接口中只能public,抽象类中都可以

允许的组成结构不同:接口中不能有构造方法、静态代码块、实例变量,抽象类可以有   相同点: 都属于引用数据类型,不属于基本数据类型 都不能直接实例化 其中的抽象部分都需要被实现来使用            

 

标签:构造方法,子类,接口,实例,抽象类,方法
From: https://www.cnblogs.com/deity-night/p/17341748.html

相关文章

  • Java-Day-13(抽象类 + 接口 + 内部类)
    Java-Day-13抽象类(abstract)当父类的某些方法需要声明,但是又不确定如何实现时(主要在于子类的重写时),可以将其声明为抽象方法,那么这个类就是抽象类所谓抽象方法就是没有实现的方法,而所谓没有实现就是指没有方法体当一个类中存在抽象方法时,需要将该类声明为abstract......
  • Spring cloud:开发接口
    @RequestBody支持json格式,前端传过来某类型的数据,后端直接可以用@RequestParam?id=1此类传参,有时候会导致类型不能转换错误例如,前端页面分页,传过来的page、size,在地址栏显示,路径后?id=xx ,两个数据明显是int,如果用了@RequestParam接收多个参数后端以Map接收,不能直接接收,且报类型......
  • 类的memory以及抽象类继承学习(含测试代码)
    #include<iostream>#include<cstdio>#include<queue>#include<vector>#definelllonglongusingnamespacestd;/*注意:输出不同可能对齐参数或者编译器不同有关。*///模板类输出方法template<classT>intsize(Tlim){returnsizeof(lim);}/*......
  • ZLMediaKit实现按需拉流时rtsp流地址不对addStreamProxy返回0,接口流id参数踩坑记录
    场景开源流媒体服务器ZLMediaKit在Windows上运行、配置、按需拉流拉取摄像头rtsp视频流)并使用http-flv网页播放:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/130136245基于上面实现拉取视频流预览时,发现当调用api传参时如果更换了rtsp视频流地址,但是没有更改......
  • 抽象类和普通类的区别
    抽象类和普通类的区别抽象类和普通类都是类的概念,在面向对象编程中用于组织和管理代码。它们的主要区别在于抽象类有一些特殊的属性和限制,这些属性和限制在普通类中是没有的。具体来说,抽象类是一种特殊的类,它不能被实例化。也就是说,你不能直接使用new关键字来创建抽象类的对象......
  • 速卖通网站使用群体分析及常用接口数据返回展示
    用户群体分析随着电子商务的快速发展,速卖通已经成为全球最大的跨境电商平台之一。作为一个面向全球消费者的在线市场,速卖通网站的使用群体是非常广泛的,因此对于速卖通网站的使用群体分析是非常必要的。本文将从以下几个方面对速卖通网站的使用群体进行分析。一、用户画像  年龄......
  • 对外接口Set,可以限制非法时间值
    类作为"零件"的载体,有内部属性(private),有对外接口(public),内部属性的数据成员或函数成员,仅仅供给class内部函数成员使用,不对外开放,public规定的对外开放的接口。设置Cmytime类。具有两个成员函数int Set(inth,intm,ints)对于Set函数的要求,   1、对于非法赋值不给予......
  • 01. 接口测试基础知识概要
    01.接口测试基础知识概要概要软件接口的分类:软件内部模块与模块之间的接口、不同平台间的外部接口常见接口:HTTP协议:最广泛;常用JMeter和Postman工具来测试WebService接口:使用soap协议,通过http传输,一般是xml格式,常用SoapUI工具测试什么是接口测试:基于某种协议,模拟客......
  • 腾讯云接口
    操作步骤开通语音识别服务在调用语音识别相关接口前,您需要进入 语音识别控制台,进行实名认证和人脸认证,认证完成后,阅读《用户协议》后勾选“我已阅读并同意《用户协议》”,然后单击【立即开通】,即可一键开通录音文件识别、实时语音识别、一句话识别、录音文件识别极速版、语......
  • 小D-新版接口自动化教程
    1,如果做压测,要直接压测内网ip,通过压测公网域名,不管是http还是https,都会带来额外的耗损导致结果不准确;什么是公网IP和内网IP?NAT转换又是什么鬼?_信息技术_江门市政务服务数据管理局(jiangmen.gov.cn)......