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

抽象类和接口

时间:2024-07-28 09:25:03浏览次数:16  
标签:Java 默认 接口 抽象类 方法 public

在Java中,抽象类和接口是两种不同的概念,它们各自有一些独特的特点。下面分别介绍这两种概念的特点:

抽象类 (Abstract Class)

  1. 定义:

    • 抽象类是一种不能被实例化的类,它通常包含一些抽象方法(没有方法体的方法)和/或具体实现的方法。
    • 抽象类可以有构造器、字段、具体方法和抽象方法。
  2. 继承:

    • 一个非抽象类继承抽象类时,必须实现抽象类中的所有抽象方法。
    • 抽象类也可以继承另一个抽象类或普通类。
  3. 实例化:

    • 由于抽象类不能被实例化,所以不能直接创建抽象类的对象。
    • 必须通过继承抽象类的子类来创建对象。
  4. 访问修饰符:

    • 抽象方法必须是public、protected或package-private的,不能是private。
    • 抽象类本身可以具有任何访问级别(public, protected, package-private, 或者没有访问修饰符)。
  5. 实现细节:

    • 抽象类可以提供一些默认行为或共享代码,这些行为可以在子类中重写或直接使用。

接口 (Interface)

  1. 定义:

    • 接口是一组抽象方法的集合,它定义了一种行为规范。
    • 在Java 8及之后的版本中,接口还可以包含默认方法(default methods)和静态方法。
  2. 实现:

    • 类可以通过implements关键字实现一个或多个接口。
    • 类实现了接口就必须提供接口中所有抽象方法的具体实现。
  3. 多继承:

    • 接口支持多重继承,一个类可以实现多个接口。
    • 这样可以弥补Java单继承带来的限制。
  4. 访问修饰符:

    • 接口中所有的方法默认都是public abstract的(在Java 8之前必须显式声明为abstract),而在Java 8之后可以声明为public default或public static。
    • 接口中的字段默认都是public static final的,通常用来定义常量。
  5. 默认方法与静态方法:

    • Java 8引入了接口中的默认方法和静态方法,这样可以在不修改现有实现类的情况下添加新功能。
    • 默认方法以default关键字声明,静态方法以static关键字声明。
  6. 命名习惯:

    • 接口名通常以“Interface”结尾,尽管这不是强制性的。

总结来说,抽象类更倾向于提供部分实现和行为,而接口则更多地关注于定义行为规范。选择使用抽象类还是接口取决于你的设计需求。如果你想要提供一些默认的行为或者共享的状态,那么抽象类是一个更好的选择。如果你希望定义一个严格的契约,那么接口将是一个更合适的选择。

标签:Java,默认,接口,抽象类,方法,public
From: https://blog.csdn.net/cuimouren66888/article/details/140746603

相关文章

  • Python调用ChatTTS API接口
    Python调用ChatTTSAPI接口:#*********************************************#author:wgscd#date:2024-7-27#installlist:#pipinstallfastapi#pipinstallrequests#pipinstalluvicorn[standard]#在命令行中运行以下命令来启动服务器:#uvicornmain:app--reload......
  • 本地海康大华和录像机接入公网EasyCVR平台----调用查看设备状态,报警信息,实时播放,视频
    一.登录  GET/api/v1/login参数 字段类型描述usernameString用户名passwordString密码(经过md5加密,32位长度,不带中划线,不区分大小写)200字段类型描述    TokenString开启鉴权后访问接口需要带上Token信息    TokenTimeoutNumberToken超时(秒)Ea......
  • SGLang 大模型推理框架 qwen2部署使用案例;openai接口调用、requests调用
    参考:https://github.com/sgl-project/sglang纯python写,号称比vllm、tensorRT还快暂时支持模型安装可以pip、源码、docker安装,这里用的pip注意flashinfer安装最新版,不然会可能出错误ImportError:cannotimportname‘top_k_top_p_sampling_from_probs’from‘fla......
  • Java知识点----万类之祖(Object)以及 抽象类
    1.万类之祖---Object1.1finalize()    在对象即将销毁的时候,JVM自动调用的方法    例如:publicclassObjectA(这个是自己创建的文件名)extendsObject(默认加上的)1.2hashCode这个知识点我们用一幅图来帮助大家更好的理解:2.抽象类抽象类作为父类的作......
  • Spring源码(四) Aware 接口
    Aware接口:Aware接口是Spring提供的一组标记接口,表示bean可以通过回调方法从Spring容器接收特定框架对象的通知。publicinterfaceAware{}Spring提供了大量以Aware命名的接口,如BeanNameAware、BeanFactoryAware、ApplicationContextAware等。这些接口定义了回调方......
  • 【音频相关】I2S接口规范时序以及其同DSP的连接
    I2S接口概述I²S或I2S(Inter-ICSound或IntegratedInterchipSound)是由飞利浦公司(现NXP)在1986年制定的一种用于音频IC或者设备之间传输数字PCM信息的一种接口标准。I2S常被使用在各种音源到音频DAC中。由于I2S将信号以及时钟分开传送,它的jitter失真十分地小。I2S和I2C名字非常的......
  • UCOSIII 时间片轮调度接口OS_SchedRoundRobin详解
        时间片轮调度(Round-RobinScheduling)是一种常见的任务调度算法,它将CPU时间片均匀地分配给每个任务,确保每个任务在一定时间内能够获得CPU资源。这种调度方式适用于需要公平分配CPU时间的系统,特别是在有多个相同优先级的任务时,片轮调度能有效防止某个任务长期占用CPU......
  • 【Azure APIM】调用APIM的备份接口时候遇见InvalidParameters错误
    问题描述根据官方文档,可以调用RESTAPI来对APIM执行备份操作。要备份API管理服务,请发出以下HTTP请求:POSThttps://management.chinacloudapi.cn/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceN......
  • python——代码识别接口请求返回的图片中的内容
    【场景】测试使用图片验证码登录接口返回的是图片的base64编码,我们需要1、将base64编码转为图片2、去识别图片中的验证码,然后再拿验证码去做后续的图片验证码登录测试【参考链接】https://blog.51cto.com/u_16213316/10678659https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=......
  • Java 接口
    概念一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。使用案例接口基于阿里云和腾讯云抽取出来的公共的短信接口CommonSmsService:packagecom.lyj.demo.sms;publicinterfaceCommonSmsServiceInterfa......