首页 > 编程语言 >Java中抽象类、接口、实现类的区别

Java中抽象类、接口、实现类的区别

时间:2024-09-04 18:37:20浏览次数:6  
标签:Java 实现 可以 接口 抽象 抽象类 方法

接口、抽象类、实现类的区别


接口

  • 接口中的所有属性都必须是常量(即被public static final修饰)。
  • 接口中的所有方法都必须是抽象方法(在Java 8及以后,接口中可以包含默认方法和静态方法,但这些方法也必须有具体实现或逻辑,只是不强制要求实现类实现它们)。
  • 接口不能被实例化。
  • 接口支持多继承,即一个接口可以继承多个其他接口。
  • 接口主要用于定义对象的行为,而不涉及行为的具体实现。

抽象类

  • 抽象类中可以存在抽象方法,也可以存在具体实现的方法。
  • 抽象类中的抽象方法必须由子类实现(除非子类也是抽象类)。
  • 抽象类可以有实例变量和实例方法的实现。
  • 抽象类只能被其他类继承,且继承抽象类的子类必须实现其所有抽象方法,或者子类也必须是抽象类。
  • 抽象类支持单继承,即一个类只能继承一个抽象类。
  • 抽象类主要用于定义一种模板或框架,供子类继承和扩展。

实现类

  • 实现类可以被实例化。
  • 实现类必须实现接口中的所有方法,或者继承抽象类并提供所有抽象方法的实现。
  • 实现类可以添加自己的属性和方法,以扩展其功能。
  • 实现类遵循接口或抽象类定义的规范或框架,但也可以添加额外的功能或行为。

接口和抽象类的区别

  • 接口中所有的方法隐含都是抽象的,而抽象类则可以同时包含抽象和非抽象的方法
  • 类可以实现很多个接口,但是只能继承一个抽象类
  • 类可以不实现抽象类和接口声明的所有方法,在这种情况下,类也必须得声明成是抽象的
  • 抽象类可以在不提供接口方法实现的情况下实现接口
  • java接口中声明的变量默认都是final的,抽象类可以包含非final变量
  • java接口中的成员函数默认都是public的,抽象类中的成员函数可以是private,protected或者是public的
  • 接口是绝对抽象的,不可以被实例化。抽象类也不可以被实例化,但是如果它包含main方法的话是可以被调用的
  • 抽象类中可以有普通方法,接口中不能。
  • 抽象类可以有构造,接口不能
  • 抽象类中可以有普通字段,而接口中不行
  • 抽象类不能实现多继承,接口可以
  • 符合isa关系的选用抽象类,符合hasa关系的选用接口比抽象类抽象程度更高

标签:Java,实现,可以,接口,抽象,抽象类,方法
From: https://www.cnblogs.com/BingBing-8888/p/18397155

相关文章

  • Java--JDK8-17新特性
    目录【1】从匿名类到Lambda的转换【2】原来使用匿名内部类作为参数传递到Lambda表达式【3】Lambda表达式语法【语法格式一】:无参,无返回值,Lambda体只需要一条语句;【语法格式二】:Lambda需要一个参数;【语法格式三】:Lambda只需要一个参数时,参数的小括号可以省略;【语法格式四】......
  • [Java基础]switch case
    Javaswitchcase语句switchcase语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。语法switchcase语句语法格式如下:switch(expression){casevalue://语句break;//可选casevalue://语句break;//可选......
  • Java体系中的继承
    前言#继承(Inheritance)是面向对象编程(OOP)中的一个重要概念,它允许一个类(称为子类或派生类)可以从另一个类(称为父类、基类或超类)继承属性(数据)和方法(行为)。简单来说继承主要用于实现共性的抽取,达到代码的复用。1继承1.1什么是继承Java中使用类对实体对象进行描述,而不同的......
  • 基于java+springboot+vue的美发管理系统
    ......
  • java中的锁
    关键字:synchronized介绍synchronized是Java语言中的一个关键字,用于实现线程同步,以确保在多线程环境下对共享资源的访问是安全且一致的。它通过提供一种互斥机制来防止多个线程同时执行特定的代码区域,从而避免了数据不一致性和其他并发问题。以下是关于synchronized的一些关......
  • JavaWeb
    JavaWeb1.Servlet<?xmlversion="1.0"encoding="UTF-8"?><web-appxmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="......
  • 关于Java链表的一些操作以及力扣原题刷刷刷——反转链表、删除链表的倒数第N个节点
    1、反转链表1.1环境准备,可以自己先尝试实现/***@AuthorMiku*@Date2024/09/0209:54*@DescriptionTODO*@Version1.0*/publicclassSolution{staticclassListNode{intval;ListNodenext;ListNode(intval){......
  • 探秘JavaScript深度领域:精通面向对象编程、虚拟DOM等核心技术
    JaScript作为前端开发的核心技术之一,凭借其强大的灵活性和广泛的应用场景,吸引了大量开发者深入学习。在探秘JaScript的深度领域时,面向对象编程和虚拟DOM等核心技术无疑是两个重要的学习方向。面向对象编程(OOP)在JaScript中扮演着重要角色。虽然JaScript是一种基于原型的语言,而非传......
  • 深入理解JavaScript类与对象:揭秘类字段和静态属性的妙用,js静态属性和实例属性
    在深入理解JaScript类与对象的过程中,类字段和静态属性是两个关键的概念,掌握它们的用法可以让你在实际开发中更加得心应手。虽然JaScript在ES6之前并没有类的概念,但通过ES6及以后的版本,引入了类语法糖,使得我们能够更直观地定义和使用类。类字段是指在类中直接定义的属性,而不是在构......
  • java JRMP学习
    JavaJRMP反序化RMI依赖的通信协议为JRMP(JavaRemoteMessageProtocol,Java远程消息交换协议),该协议为Java定制,基于TCP/IP之上,RMI协议之下,当需要进行RMI远程方法调用通信的时候要求服务端与客户端都为Java编写。、这个协议就像HTTP协议一样,规定了客户端和服务端通信要满足的......