java基础之抽象的概念(全网最详细)

一.抽象的概念

如下图所示:

 如上图所示,一个父类为图形,计算图形的面积方法,那么就会有疑问,计算哪个图形的面积呢?所以这个计算图形的面积方法就称为抽象方法;

二.抽象方法和抽象类的格式 

* 抽象方法:就是加上abstract关键字,然后去掉大括号,直接分号结束;
* 抽象类:抽象方法所在的类,必须是抽象类才行,再class之前写上abstract即可; 

再demo11包中创建Animal类

代码示例:

package cn.itcast.day09.demo11;
/*** @description:抽象方法* 抽象方法:就是加上abstract关键字,然后去掉大括号,直接分号结束;* 抽象类:抽象方法所在的类,必须是抽象类才行,再class之前写上abstract即可;* @author: Admin* @create: 2023/12/11 16:36*/
public abstract class Animal {//这是一个抽象方法,代表吃东西,但是具体吃什么,不确定public abstract void eat();//这是普通的成员方法public void normalMethod(){}}

三.抽象方法和抽象类的使用

如何使用抽象类和抽象方法
* 1.不能直接创建new抽象类对象
* 2.必须用一个子类来继承抽象父类
* 3.子类必须覆盖重写抽象父类当中所有的抽象方法覆盖重写(实现),子类去掉抽象方法的abstract关键字,然后补上方法体大括号
* 4.创建子类对象进行使用

 再demo11包下再新建一个Cat类

Cat类

package cn.itcast.day09.demo11;/*** @description* @author: Admin* @create: 2023/12/12 8:41*/
public class Cat extends Animal{//覆盖重写@Overridepublic void eat(){System.out.println("猫吃鱼");}
}

再demo11包下创建一个DemoMain类(主类)

package cn.itcast.day09.demo11;
/*** @description* @author: Admin* @create: 2023/12/12 9:05*/
public class DemoMain {public static void main(String[] args){
//        Animal animal=new Animal();//错误写法,不能直接创建抽象类对象Cat cat=new Cat();cat.eat();}}

 运行主类的结果:

 四.抽象方法和抽象类的注意事项

关于抽象类的使用,以下为语法上要注意的细节,虽然条目较多,但若理解了抽象的本质,无需死记硬背。
1. 抽象类 不能创建对象 ,如果创建,编译无法通过而报错。只能创建其非抽象子类的对象。
理解:假设创建了抽象类的对象,调用抽象的方法,而抽象方法没有具体的方法体,没有意义。
2. 抽象类中,可以有构造方法,是供子类创建对象时,初始化父类成员使用的。
理解:子类的构造方法中,有默认的 super() ,需要访问父类构造方法。
3. 抽象类中,不一定包含抽象方法,但是有抽象方法的类必定是抽象类。
理解:未包含抽象方法的抽象类,目的就是不想让调用者创建该类对象,通常用于某些特殊的类结构设计。
4. 抽象类的子类,必须重写抽象父类中 所有的 抽象方法,否则,编译无法通过而报错。除非该子类也是抽象类。
理解:假设不重写所有抽象方法,则类中可能包含抽象方法。那么创建对象后,调用抽象的方法,没有意义。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LIMoE:使用MoE学习多个模态

文章链接:Multimodal Contrastive Learning with LIMoE: the Language-Image Mixture of Experts 发表期刊(会议): NeurIPS 2022 目录 1.背景介绍稀疏模型 2.内容摘要Sparse Mixture-of-Experts ModelsContrastive LearningExperiment Analy…

lwIP 细节之五:accept 回调函数是何时调用的

使用 lwIP 协议栈进行 TCP 裸机编程,其本质就是编写协议栈指定的各种回调函数。将你的应用逻辑封装成函数,注册到协议栈,在适当的时候,由协议栈自动调用,所以称为回调。 注:除非特别说明,以下内…

阿木实验室普罗米修斯项目环境配置

引言 普罗米修斯项目其实只是个大ROS功能包, 里面每个模块就是每个ROS功能包,比如控制模块,视觉模块等等。对PX4配置的与这个一样,另外他是使用自己的P系列无人机(我个人是P450),所…

Objection

本文作者:杉木涂鸦智能安全实验室 Home objection - 基于frida的命令行hook工具食用手册 实用FRIDA进阶:内存漫游、hook anywhere、抓包-安全客 - 安全资讯平台 Objection是一个基于Frida的命令行hook工具,用于移动设备的运行时探索。它可…

Idea的Marketplace下载不了插件,idea下不了插件

Idea的Marketplace下载不了插件 解决方案(配置代理) 附一张成功界面 2.问题复现 3.问题原因和解决方式:下载安装IDEA之后HTTP Proxy没有进行相关配置的问题,解决方式如下 1.首先打开file->setting->Appearance & B…

Maxscript入门教程:Print与Format命令

本文对Maxscript中的“Print”和“Format”命令之间的差异进行了一些小小的研究,得出的结论主要的差异是它们的结果中的引号“”。 “Print”很简单,直接使用,在调试时非常有用。为了工作,它只需要一个字符串(这是两个…

[学习笔记]在CentOS7中用Docker方式安装Jenkins

文章目录 原理:创建Docker网桥网络安装DinD创建镜像构建镜像运行容器 原理: Docker in Docker (以下简称 DinD)可以在 Container 中直接运行一个 Docker Daemon ,然后使用 Container 中的 Docker CLI 工具操作容器。其…

最详细的Selenium+Pytest自动化测试框架实战

前言 selenium自动化 pytest测试框架 本章你需要 一定的python基础——至少明白类与对象,封装继承 一定的selenium基础——本篇不讲selenium, 测试框架简介 测试框架有什么优点呢: 代码复用率高,如果不使用框架的话&#xff…

【模拟】LeetCode-48. 旋转图像

旋转图像。 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 示例 1: 输入:matrix [[1,2,3],[4,5,6]…

武汉凯迪正大—门尼粘度试验机

武汉凯迪正大KY-6004型门尼粘度仪用于胶料粘度和硫化指数的测定。试样在一定的温度和压力下,转子以一定的旋转力矩对试样加以一定的剪切力,仪器测出橡胶的反剪切力矩,是再生胶、橡胶、电线电缆行业常用的仪器之一。 武汉凯迪正大KY-6004型门…

科技与艺术相结合,虚拟人裸眼3D动画亮相城市商圈

随着元宇宙概念的火爆,虚拟制作技术的快速发展,虚拟人可以将虚拟世界与现实世界相结合,为用户带来沉浸式体验。如虚拟人壬子希以裸眼3D动画的形式亮相城市商圈,助力文旅以科技与艺术相结合的形式,展现城市文化与科技成…

【SpringBoot】入门精简

目录 一、初识 SpringBoot 1.1 介绍 1.2 项目创建 1.3 目录结构 1.4 修改配置 二、SpringBoot 集成 2.1 集成 Mybatis框架 2.2 集成 Pagehepler分页插件 2.3 集成 Druid数据库连接池 2.4 集成 Log日志管理 一、初识 SpringBoot 1.1 介绍 Spring Boot是一个用于简化Sp…