抽象类和接口(1)(抽象类部分)

❤️❤️前言

hellohello~,大家好💕💕,这里是E绵绵呀✋✋ ,如果觉得这篇文章还不错的话还请点赞❤️❤️收藏💞 💞 关注💥💥,如果发现这篇文章有问题的话,欢迎各位评论留言指正,大家一起加油!一起chin up!👍👍 

💥个人主页:E绵绵的博客     c语言题目练习
💥 所属专栏:JAVASE题目练习  JAVASE知识点专栏  c语言知识点专栏   c语言题目练习

抽象类概念

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

此外还有抽象方法这个概念 :

💕💕在打印图形例子中, 我们发现, 父类 Shape 中的 draw 方法好像并没有什么实际工作, 主要的绘制图形都是由 Shape 的各种子类的 draw 方法来完成的. 像这种没有实际工作的方法, 我们可以把它设计成一个 抽象方法(abstract method), 包含抽象方法的类我们称为 抽象类(abstract class) 

  注意:抽象类可以不含有抽象方法,但含抽象方法的类必须为抽象类。

  所以讲完了它的概念,我们就开始它的语法吧。

抽象类语法 

❤️❤️ 在Java中,一个类如果被 abstract 修饰称为抽象类,抽象类中被 abstract 修饰的方法称为抽象方法,抽象方法不用给出具体的实现体。一个抽象类内可以不含抽象方法。

// 抽象类:被abstract修饰的类
public abstract class Shape {
    // 抽象方法:被abstract修饰的方法,没有方法体
    abstract public void draw();
    abstract void calcArea();
 
    // 抽象类也是类,也可以增加普通方法和属性
    public double getArea(){
        return area;
   }
 
    protected double area;    // 面积
}

❤️❤️注意:抽象类也是类,内部可以包含普通方法和属性甚至构造方法。但是肯定有一些不同的特性跟正常类相比。所以接下来我们就介绍下抽象类特性。

抽象类特性

🎯1.抽象类不能实例化创建对象

shape此时为抽象类类型,所以这时用它实例化创建对象就报错了。

所以抽象类的出现,就是要被继承,只有继承了抽象类才能使用它。

🎯2. 如果有抽象方法存在于抽象类中,则它的子类就必须重写这个抽象类中的所有抽象方法,不然报  错,当然也可以用abstract修饰,使子类也变为抽象类,这时就轮到子类的子类去重写完两个抽象类中的所有抽象方法,如果没有重写完,就会报错。

作者的扩展:

抽象类的子类即使被abstract修饰了,它也能对其父类中的抽象方法进行重写,如果全部重写完了,则其子类的子类就可以不用重写了(你想重写也可以,不必多此一举) ,同理如果重写了部分抽象方法,则子类的子类只要重写另一部分的抽象方法就行。(当然,你还想再重写已经重写过的抽象方法也可以)

🎯3.因为子类抽象方法需要被重写,所以它的子类抽象方法不能被final,private,static修饰  

🎯4.抽象类中可以有构造方法,供子类创建对象时,初始化父类的成员变量

🎯5.抽象类中不一定包含抽象方法,但是有抽象方法的类一定是抽象类(多次强调了)

🎯6.抽象方法不能被调用(注意是抽象类中的抽象方法,不是重写的方法),调用了抽象类中的抽象方法的话就会直接被系统说报错。

 抽象类的作用

好了所以抽象类和接口的抽象类部分就结束了,之后将给大家带来接口部分的讲解~🥳🎉🎉🎉!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/492706.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

初步接触C++

hello,各位小伙伴,本篇文章跟大家一起学习C,感谢大家对我上一篇的支持,如有什么问题,还请多多指教 ! 文章目录 初步区别C语言和C命名空间1.命名空间的定义2.命名空间的使用 C的输入输出缺省参数1.缺省参数…

Python Flask-Mail实现邮件发送

一、邮件发送的扩展 关于如何找到flask发送邮件的插件?,上一篇已经分享了如何找到第三方插件,也找到了插件flask-mail的使用文档,那我们就来实战吧 二、根据文档,总结发送邮件的流程 从文档中可以总结出发送邮件的步…

【进程控制】谈谈进程终止的三种状态

文章目录 进程终止退出码信号信号术语 进程常见的退出方法exit函数与_exit函数的区别对比exit和_exit函数对于缓冲区的处理 进程终止 进程终止,也就是进程运行结束。结束有两种含义,一种是“正常”结束,带有结果,即代码运行完毕。…

第十三届蓝桥杯省赛C++ A组 Java A组/研究生组《推导部分和》(C++)

【题目描述】 【输入格式】 【输出格式】 【数据范围】 【输入样例】 5 3 3 1 5 15 4 5 9 2 3 5 1 5 1 3 1 2 【输出样例】 15 6 UNKNOWN 【思路】 题解来源&#xff1a;AcWing 4651. $\Huge\color{gold}{推导部分和}$ - AcWing 【代码】 #include<bits/stdc.h> #define…

使用itext-core生成PDF

1、添加引用依赖包 <dependency><groupId>com.itextpdf</groupId><artifactId>itext-core</artifactId><version>8.0.3</version><type>pom</type></dependency> 2、上代码 package com.student.demo.pdf;impor…

C# 登录界面代码

背景 MVVM 是一种软件架构模式&#xff0c;用于创建用户界面。它将用户界面&#xff08;View&#xff09;、业务逻辑&#xff08;ViewModel&#xff09;和数据模型&#xff08;Model&#xff09;分离开来&#xff0c;以提高代码的可维护性和可测试性。 MainWindow 类是 View&a…

红胖子创业第三年总结:保守稳定客户,技术业务认可,口碑业务增长,国内创业真相,减少外协占比,投入研发产品,寻求资本渠道,享受快乐自由

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/137067698 各位读者&#xff0c;知识无穷而人力有穷&#xff0c;要么改需求&#xff0c;要么找专业人士&#xff0c;要么自己研究 红胖子网络科技博…

计算机网络01-20

计算机网络01-20 以下是本文参考的资料 欢迎大家查收原版 本版本仅作个人笔记使用1、OSI 的七层模型分别是&#xff1f;各自的功能是什么&#xff1f;2、说一下一次完整的HTTP请求过程包括哪些内容&#xff1f;孤单小弟 —— HTTP真实地址查询 —— DNS指南好帮手 —— 协议栈可…

Java八股文(Elasticsearch)

Java八股文のElasticsearch Elasticsearch Elasticsearch 什么是Elasticsearch&#xff1f; Elasticsearch是一个开源的分布式搜索和分析引擎&#xff0c;用于实时存储、搜索和分析大规模数据集。 Elasticsearch的主要特点是什么&#xff1f; Elasticsearch的主要特点包括&…

【线上环境更换国产麒麟银河服务器之后FTP无法解析文件字符串的问题】

默认使用的 UnixFTPEntryParser没有办法解析麒麟系统下的文件字符串&#xff01;&#xff01;&#xff01; 所以通过设置FTPClientConfig设置系统编码解析类型 FTPClientConfig conf new FTPClientConfig(FTPClientConfig.SYST_NT);ftpClient.configure(conf);好了&#xff0c…

flutter布局更新

理论上&#xff0c;某个组件的布局变化后&#xff0c;就可能会影响其他组件的布局&#xff0c;所以当有组件布局发生变化后&#xff0c;最笨的办法是对整棵组件树 relayout&#xff08;重新布局&#xff09;&#xff01;但是对所有组件进行 relayout 的成本还是太大&#xff0c…

python初体验

Python初学者之旅&#xff1a;从零开始的编程世界探索 开篇词 欢迎来到Python编程的世界&#xff01;作为一名初学者&#xff0c;你也许对这个简洁明了、功能强大的编程语言充满了好奇与期待。Python以其易于理解的语法、丰富的标准库及活跃的社区深受全球开发者喜爱&#xff…

Linux下线程池详解与实现:提升多任务处理效率的关键

&#x1f3ac;慕斯主页&#xff1a;修仙—别有洞天 ♈️今日夜电波&#xff1a;マイノリティ脈絡—ずっと真夜中でいいのに。 0:24━━━━━━️&#x1f49f;──────── 4:02 &#x1f504; ◀…

隐蔽处工程监管系统

随着科技的飞速发展&#xff0c;信息化、智能化已经成为各行各业发展的必然趋势。在工程建设领域&#xff0c;传统的监管方式已经难以满足现代工程管理的需求。为了提高工程监管的效率和精度&#xff0c;信鸥科技倾力打造了一款全新的工程监管系统&#xff0c;为工程建设行业带…

Weaviate

文章目录 关于 Weaviate核心功能部署方式使用场景 快速上手 &#xff08;Python)1、创建 Weaviate 数据库2、安装3、连接到 Weaviate4、定义数据集5、添加对象6、查询1&#xff09;Semantic search2) Semantic search with a filter 使用示例Similarity searchLLMs and searchC…

金蝶BI方案治好我的数据分析困难症

结构分析、趋势分析、分布分析、对比分析……这还是大方向的&#xff0c;细分下来还会根据数据类型和具体场景不同而不同&#xff0c;不仅如此&#xff0c;每个月的数据分析需求还可能不同&#xff0c;导致分析量多且复杂&#xff0c;加班加点也忙不过来。但金蝶BI方案就不一样…

构造函数与析构函数的显示调用

目录 前言&#xff1a; 构造函数的显示调用 显示调用无参构造 隐式调用无参构造 显示调用有参构造 构造函数的执行顺序 析构函数的显示调用 析构函数的调用顺序 显示调用析构函数 前言&#xff1a; 构造函数是类的特殊成员函数&#xff0c;创建对象时编译器会自动调用…

win10开启了hyper-v,docker 启动还是报错 docker desktop windows hypervisor is not present

问题 在安装了docker windows版本后启动 docker报错docker desktop windows hypervisor is not present 解决措施 首先确认windows功能是否打开Hyper-v 勾选后重启&#xff0c;再次启动 启动后仍报这个错误&#xff0c;是Hyper-v没有设置成功 使用cmd禁用再启用 一.禁用h…

oracle docker安装

修改下载的Image的REPOSITORY和TAG属性 修改下载的Image的REPOSITORY和TAG属性&#xff1a;docker tag <IMAGE ID> <REPOSITORY NAME> docker tag 3fa112fd3642 aliyun/oracle_11g 参考网址 使用docker images时&#xff0c;可能会出现REPOSITORY和TAG均为none的镜…

【JVM】JVM 运行时数据区简介

文章目录 &#x1f334;简介&#x1f332;堆&#xff08;线程共享&#xff09;&#x1f384;本地方法栈&#xff08;线程私有&#xff09;&#x1f333;程序计数器&#xff08;线程私有&#xff09;&#x1f340;方法区&#xff08;线程共享&#xff09;&#x1f338;JDK 1.8 元…