首页 > 编程语言 >Java中抽象类的学习

Java中抽象类的学习

时间:2024-08-31 14:49:14浏览次数:11  
标签:Java 实现 子类 学习 Shape 抽象 抽象类 方法

抽象类


目录

抽象类的概念

在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。

抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。

由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用。也是因为这个原因,通常在设计阶段决定要不要设计抽象类。

父类包含了子类集合的常见的方法,但是由于父类本身是抽象的,所以不能使用这些方法。

在 Java 中抽象类表示的是一种继承关系,一个类只能继承一个抽象类,而一个类却可以实现多个接口。

在 Java 语言中使用 abstract class 来定义抽象类。如下实例:

// 定义一个抽象类Shape  
abstract class Shape {  
    // 抽象方法,没有实现体  
    public abstract void draw();  
}  
  
// 定义一个继承自Shape的子类Circle  
class Circle extends Shape {  
    // 实现父类中的抽象方法  
    @Override  
    public void draw() {  
        System.out.println("Inside Circle::draw() method.");  
    }  
}  
  
// 定义一个继承自Shape的子类Rectangle  
class Rectangle extends Shape {  
    // 实现父类中的抽象方法  
    @Override  
    public void draw() {  
        System.out.println("Inside Rectangle::draw() method.");  
    }  
}  
  
// 测试类  
public class TestAbstractClass {  
    public static void main(String[] args) {  
        // 创建Circle对象  
        Shape circle = new Circle();  
        circle.draw();  
  
        // 创建Rectangle对象  
        Shape rectangle = new Rectangle();  
        rectangle.draw();  
    }  
}

抽象类的好处

抽象类的好处主要体现在以下几个方面:

1. 代码复用与简化

  • 模板化实现:抽象类提供了一种模板化的实现方式,通过定义通用的属性和方法,使得子类可以继承这些共同的属性和方法,从而减少重复代码,提高代码复用性。
  • 简化设计:抽象类可以将具有共同特征和行为的类进行抽象,简化代码的设计和维护。它作为类层次结构中的顶层类,定义了通用的属性和方法,子类可以继承并实现具体的功能。

2. 强制实现特定方法

  • 约束子类行为:抽象类可以定义抽象方法,要求子类必须实现这些方法,从而约束子类的行为。这有助于确保子类遵循一定的接口规范,实现相应的功能。
  • 提高代码一致性:通过定义抽象方法,可以确保子类具有相同的方法签名,提高代码的一致性和可预测性。

3. 隐藏实现细节

  • 提高封装性:抽象类可以将一些共同的实现细节放在抽象类中,对子类隐藏起来,从而提高代码的封装性和安全性。

4. 支持扩展性和灵活性

  • 扩展方式:抽象类提供了一种扩展的方式,当需要在类层次结构中添加新的功能时,可以通过继承抽象类并实现抽象方法来完成。这种方式比直接修改已有类更加灵活,并能保持较好的代码组织结构。
  • 多重继承效果:一个类可以同时继承一个抽象类并实现多个接口,从而实现多重继承的效果,提高代码的灵活性和可扩展性。

5. 公共服务功能

  • 提供公共服务:抽象类可以包含非抽象方法,这些方法有具体的实现。子类可以直接继承和使用这些非抽象方法,实现一些公共服务功能,提高代码的复用性。

6. 稳定的抽象层依赖

  • 便于架构复用:抽象类可以建立稳定的抽象层依赖,便于架构层面的整体复用。通过定义稳定的抽象层,可以在不修改现有代码的基础上,通过添加新的子类来扩展系统的功能。

综上所述,抽象类在面向对象编程中扮演着重要的角色,它通过提供模板化实现、强制实现特定方法、隐藏实现细节、支持扩展性和灵活性、提供公共服务功能以及建立稳定的抽象层依赖等方式,极大地提高了代码的可维护性、复用性、一致性和可扩展性。

标签:Java,实现,子类,学习,Shape,抽象,抽象类,方法
From: https://www.cnblogs.com/BingBing-8888/p/18390271

相关文章

  • Chapter2 监督学习
    参考学习书目:UnderstandingDeeplearning记录一下学习该书的过程。监督学习:监督学习模型是将一个或多个出入转化为一个或多个输出的方式。这个模型可以理解为一个数学公式,把输入放在公式里进行计算,得到的结果就是推理,而公式中包含一些参数,改变参数会改变计算的结果。而我......
  • 【Python技术学习】- python基础语法
    编码默认情况下,Python3源码文件以 UTF-8 编码,所有字符串都是unicode字符串。当然你也可以为源码文件指定不同的编码:#-*-coding:cp-1252-*-上述定义允许在源文件中使用Windows-1252字符集中的字符编码,对应适合语言为保加利亚语、白罗斯语、马其顿语、俄语、塞......
  • JAVA多线程异步与线程池------JAVA
    初始化线程的四种方式继承Thread实现Runnable接口实现Callable接口+FutureTask(可以拿到返回结果,可以处理异常)线程池继承Thread和实现Runnable接口的方式,主进程无法获取线程的运算结果,不适合业务开发实现Callable接口+FutureTask可以获取线程内的返回结果,但是不利......
  • 海康二次开发学习笔记9-通讯触发及模块列表获取
    通讯触发及模块列表获取模块列表获取获取流程中所有模块的模块名,添加下拉框用于显示模块名1.处理Combox2的DropDown事件///<summary>///模块列表获取///</summary>///<paramname="sender"></param>///<paramname=......
  • 泰坦尼克号 - 从灾难中学习机器学习/Titanic - Machine Learning from Disaster(kaggle
    此次目的:hello大家好,俺是没事爱瞎捣鼓又分享欲爆棚的叶同学!!!准备出几期博客来记录我学习kaggle数据科学入门竞赛的过程,顺便也将其中所学习到的知识分享出来。(所学主要的内容来自与b站大学恩师“编程教学-Python“的教学视频内容)哎!前几天,俺还在享受快乐生活嘞,几天就到学校了!痛......
  • Java必知必会-基础篇
    说明:《Java必知必会》是一档专为Java学习者设计的专栏,旨在帮助读者系统地掌握Java编程语言的核心知识,从基础语法到高级特性,从理论应用到实战演练,一站式解决你的Java学习难题。可在我的专栏里订阅,该专栏一共有15篇,本篇是第二篇。会先教会大家如何使用,并给出相应的练习题示例作......
  • Markdown学习
    ##1.哪些内容是你掌握的?哪些内容是你没有掌握的?-掌握的内容:基本语法、标题、代码块等Markdown基本用法已经掌握-未掌握的内容:列表、链接、图片、引用等Markdown基本用法学习的内容:1、画表格||学科1|学科2||----------------|-------------------......
  • Markdown学习
    一、通过学习、实践AI平台返回的内容:(1)Markdown简介和详细语法概述:Markdown是一种轻量级的标记语言,允许用户使用纯文本格式编写结构化文档。它最初由JohnGruber在2004年创建,旨在使网页编写者能够通过一些简单的语法来生成格式化的内容,最终输出为HTML。详细语法:Markdown的语......
  • 【网络编程通关之路】 Tcp 基础回显服务器(Java实现)及保姆式知识原理详解 ! ! !
    本篇会加入个人的所谓鱼式疯言❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言而是理解过并总结出来通俗易懂的大白话,小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的.......
  • 【机器学习】K近邻(K-Nearest Neighbors,简称KNN)的基本概念以及消极方法和积极方法的区
    引言K近邻(K-NearestNeighbors,简称KNN)算法是一种基础的机器学习方法,属于监督学习范畴文章目录引言一、K近邻(K-NearestNeighbors,简称KNN)1.1原理详述1.1.1距离度量1.1.2选择k值1.1.3投票机制1.2实现步骤1.3参数选择1.4应用场景1.5优缺点1.5.1优点1.5.2缺点......