首页 > 其他分享 >抽象类

抽象类

时间:2024-08-05 12:49:28浏览次数:12  
标签:实现 子类 接口 抽象 抽象类 方法

抽象类

1.抽象类的概念

1.什么是抽象

“抽象”在编程中通常指的是从具体事物中提取出共同特性或行为,忽略掉细节和差异,形成一个更高层次的、更一般的概念或表示。这种过程允许我们关注于事物的本质,而不是具体的实现细节。

2.为什么要抽象

Java中的抽象类(Abstract Class)是一种特殊的类,它不能被实例化,即不能创建该类的具体对象。抽象类的主要目的是为子类提供一个通用的模板,定义一些子类共有的属性和方法,同时允许子类根据自身需求实现或重写这些方法。抽象类之所以要抽象,主要有以下几个原因:

  1. 强制实现方法
    抽象类可以包含抽象方法(使用abstract关键字修饰的方法,没有方法体)。当子类继承抽象类时,必须实现(重写)抽象类中所有的抽象方法,除非子类也被声明为抽象类。这一特性强制了子类必须提供某些方法的具体实现,确保了类的行为一致性。
  2. 代码复用
    抽象类可以包含非抽象方法(即普通方法),这些方法为子类提供了通用的实现,避免了代码重复。子类可以直接使用这些方法,也可以根据需要重写它们。
  3. 定义接口标准
    在Java中,抽象类可以作为一组接口的集合,定义了接口之间的契约,但同时又提供了部分实现。这使得抽象类在接口和实现类之间起到了桥梁的作用,既定义了行为标准,又提供了一定的实现细节。
  4. 限制实例化
    由于抽象类不能被实例化,它主要用于被其他类继承。这种限制确保了抽象类仅仅是一个模板或基类,而不是一个可以独立使用的对象。
  5. 设计灵活性
    通过使用抽象类,开发者可以设计出更加灵活和可扩展的系统。抽象类允许在将来添加新的子类,而不需要修改现有的代码。这种设计方式符合开闭原则(对扩展开放,对修改关闭),有助于维护系统的稳定性和可维护性。
  6. 提高代码可读性
    抽象类通过其结构和命名,为系统提供了清晰的层次结构和功能划分,使得代码更加易于理解和维护。

2.抽象类,实现类,接口的区别

虽然抽象类和接口都可以实现抽象化和多态性,但是它们在一些细节上有所不同。以下是抽象类和接口的区别:

2.1 实现方式
抽象类是一种特殊的类,需要通过继承它来使用。接口是一种纯抽象的类型,需要通过实现它来使用。

2.2 方法类型
抽象类中的方法可以是抽象的或者非抽象的,而接口中的方法都是抽象的。

2.3 成员变量
抽象类中可以有普通成员变量,也可以有静态成员变量,而接口中只能有常量。

2.4 构造方法
抽象类中可以有构造方法,而接口中不能有构造方法。

2.5 访问修饰符
抽象类中的成员变量和成员方法可以有public、protected、default、private四种访问修饰符,而接口中的成员变量和成员方法只能有public访问修饰符。

3.抽象类的好处

1、抽象类最根本的作用,还是提高代码的规范性和可维护性。
2、抽象类一般是作为父类,让子类继承的。所以它可以将子类的共有的一些属性和方法写入抽象类中,以便子类使用(除抽象方法不能直接使用)。这一点跟继承特性是一样的。
3、抽象类中可以定义抽象方法。这也是实际应用中最重要的一点。抽象方法就是当父类知道有一些方法子类必须实现或者要有,但每一个子类的对于这个方法的具体实现都不同,那么,就把这个方法定义为抽象的。不规定具体实现内容。
这样子类在继承后,知道这个方法自己必须要去实现。

标签:实现,子类,接口,抽象,抽象类,方法
From: https://www.cnblogs.com/zpjd/p/18342994

相关文章

  • Java SE核心技术——9抽象类
    面向对象编程(Object-OrientedProgramming,简称OOP)和面向过程编程(Procedure-OrientedProgramming)是两种不同的编程范式,它们在设计和实现软件时采用了不同的方法和哲学。一、面向对象编程核心概念:面向对象编程的核心是"对象",对象可以包含数据(属性)和代码(方法)。万物皆对象。封......
  • Android开发 - Presenter抽象类解析
    Presenter是什么职责:Presenter的主要职责是管理视图(通常是用户界面组件)的显示和行为它不处理数据的逻辑,而是专注于如何展示数据在Leanback库中的作用:Leanback库是为AndroidTV设计的一个库,提供了一些特殊的UI组件,比如BrowseFragment。Presenter在L......
  • Java中的抽象类
    目录抽象类抽象类为什么要抽象?抽象类的特征与用法抽象类的好处抽象类、实现类、接口的区别注意抽象类抽象就是从多个事物中将共性的,本质的内容抽取出来。抽象类Java中可以定义没有方法体的方法,该方法的具体实现由子类完成,该方法称为抽象方法,包含抽象方法的类就是抽象类。​......
  • 抽象类,实现(具体)类,接口的区别
    抽象类,实现(具体)类,接口的区别抽象类、具体类和接口是面向对象编程中的三个基本构建块,它们各自有不同的用途和特点。抽象类(AbstractClass)定义:抽象类不能被实例化,它通常用作基类,为其他子类提供一个通用的模板。目的:提供一个通用的框架,包含一些共同的方法和属性,可能包含抽......
  • 抽象类的概念
    什么是抽象在面向对象编程中,"抽象"是一个核心概念,它允许我们专注于对象的基本特征,忽略那些与当前目标无关的细节。以下是“抽象”的两个主要方面:抽象数据类型(AbstractDataType,ADT)抽象数据类型是一种仅通过其行为(方法)和接口(数据结构)来描述的数据类型,而不需要关心具体的实......
  • 抽象类的好处
    抽象类的好处封装共享属性和行为抽象类允许将一组相关的属性和行为封装在一起,这些可以在多个子类中共享。提供通用接口抽象类定义了一组方法,这些方法为所有子类提供了一个通用的接口,确保它们遵循相同的契约。实现代码重用抽象类可以包含一些已经实现的方法,这些方法可......
  • 抽象类
    抽象类(AbstractClass)抽象类(AbstractClass)是面向对象编程中的一个重要概念,它主要用在需要定义一组接口(即一组方法),但又不希望实现这些接口的具体类上。抽象类是一种不能被实例化的类,它通常包含一些抽象方法(即只有声明没有实现的方法),用于强制子类实现这些方法。一.概念抽象类......
  • Java面试题:请问接口与抽象类有何区别?
    引言在OOD(面向对象设计)中,经常会用到抽象类或接口。而在使用过程中,也许会有不少人认为接口和抽象类差不多,然后就想当然地觉得可以相互替换。事实上,虽然他们有很多相似点,但也有很大差异。面试官通常会问你他们到底有哪些差异,以考察你的面向对象功力够不够。下面我就从三个层面谈......
  • 抽象类
    抽象类1.抽象类的概念在Java中,抽象类是一种不能被实例化的类,它通常用于表示一种基类,其中定义了一些被具体类(子类)实现或继承的抽象方法。抽象类使用abstract关键字声明。抽象方法:抽象方法是没有方法体的方法,即只有方法声明没有方法实现。抽象方法也必须用abstract关键字声明,并......
  • Java 抽象类
    在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。......