第一百零九节 Java面向对象设计 - Java抽象类和方法

Java面向对象设计 - Java抽象类和方法

Java可以定义一个类,其对象不能被创建。

它的目的只是表示一个想法,这是其他类的对象共有的。

这样的类称为抽象类。

语法

我们需要在类声明中使用 abstract 关键字来声明一个抽象类。

例如,下面的代码声明一个Shape类的抽象:

public abstract class Shape  {}

下面的代码为Shape类添加了一个draw()方法。

public abstract class Shape  {public  Shape() {}public abstract  void  draw();
}

抽象类不一定意味着它具有至少一个抽象方法。

如果一个类有一个被声明或继承的抽象方法,它必须被声明为抽象。

抽象方法的声明方式与任何其他方法相同,只是它的主体由分号表示。

例子

下面的Shape类有抽象和非抽象方法。

abstract class Shape {private String name;public Shape() {this.name = "Unknown  shape";}public Shape(String name) {this.name = name;}public String getName() {return this.name;}public void setName(String name) {this.name = name;}// Abstract methodspublic abstract void draw();public abstract double getArea();public abstract double getPerimeter();
}

下面的代码展示了如何创建一个Rectangle类,它继承自Shape类。

class Rectangle extends Shape {private double width;private double height;public Rectangle(double width, double height) {// Set the shape name as "Rectangle"super("Rectangle");this.width = width;this.height = height;}// Provide an implementation for inherited abstract draw() methodpublic void draw() {System.out.println("Drawing a  rectangle...");}// Provide an implementation for inherited abstract getArea() methodpublic double getArea() {return width * height;}// Provide an implementation for inherited abstract getPerimeter() methodpublic double getPerimeter() {return 2.0 * (width + height);}
}


 

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

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

相关文章

[240614] 微软推迟发布 Recall AI 功能 | YouTube 尝试在服务器端注入广告

目录 微软推迟发布 Recall AI 功能YouTube 尝试在服务器端注入广告 微软推迟发布 Recall AI 功能 微软表示,由于担心隐私风险,不会在下周推出 “Recall” 功能,这是一项跟踪计算机使用情况的 AI 功能 Recall 功能能跟踪网页浏览&#xff0c…

微信群发机器人.使用指南.

0.简介 1.介绍 微信群发机器人是用来群发微信消息的工具,通过控制电脑的键盘和鼠标操作微信app来实现群发.支持的消息类型有:文字,图片,视频,文件,小程序,位置等. 群发机器人也可以将微信联系人中的信息保存到电脑csv表格中,以供分析. 因其是通过模拟用户操作鼠标键盘来实现群…

the histogram of cross-entropy loss values 交叉熵损失值的直方图以及cross-entropy loss交叉熵损失

交叉熵损失值的直方图在机器学习和深度学习中有几个重要的作用和用途: 评估模型性能: 直方图可以帮助评估模型在训练数据和测试数据上的性能。通过观察损失值的分布,可以了解模型在不同数据集上的表现情况。例如,损失值分布的形状和范围可以反…

C++中extern “C“的用法

目的 extern "C"是经常用到的东西,面试题目也经常出现,然则,实际用时,还是经常遗忘,因此,深入的了解一下,以增强记忆。 extern "C"指令非常有用,因为C和C的近亲…

mysql安装配置教程(Linux+Windows)

mysql安装配置教程(LinuxWindows) 文章目录 mysql安装配置教程(LinuxWindows)摘要在 Linux 上安装和配置 MySQL1. 安装 MySQLUbuntu/DebianCentOS/RHEL 2. 配置 MySQL初始化 MySQL登录 MySQL创建数据库和用户配置 MySQL 文件 3. 测…

Android MediaMetadataRetriever获取视频宽高,Java

Android MediaMetadataRetriever获取视频宽高,Java public static int[] getVideoSize(Context ctx, Uri uri) {MediaMetadataRetriever retriever new MediaMetadataRetriever();int[] size {-1, -1}; //宽,高try {retriever.setDataSource(ctx, uri)…

双向转发检测BFD(学习笔记)

定义 双向转发检测BFD(Bidirectional Forwarding Detection)是一种全网统一的检测机制,用于快速检测、监控网络中链路或者IP路由的转发连通状况 BFD检测机制 BFD的检测机制是两个系统建立BFD会话,并沿它们之间的路径周期性发送B…

Java 开发实例:Spring Boot+AOP+注解+Redis防重复提交(防抖)

文章目录 1. 环境准备2. 引入依赖3. 配置Redis4. 创建防重复提交注解5. 实现AOP切面6. 创建示例Controller7. 测试8. 进一步优化8.1 自定义异常处理8.2 提升Redis的健壮性 9. 总结 🎉欢迎来到Java学习路线专栏~探索Java中的静态变量与实例变量 ☆* o(≧▽≦)o *☆嗨…

King Media 8.2 中文版安装

King Media-Viral Magazine News Video是一个用于架设社交网站的php脚本,能让您创建一个视频、新闻和图像的新颖社交网站。 功能 支持:从Url、Youtube、Vimeo、Vine、Instagram、Metacafe、DailyMotion上传和分享图片通过Facebook、谷歌、雅虎、Github和…

EC20通信模块升级失败 Quectel QDLoader 9008

这里写自定义目录标题 usb驱动下载固件和升级软件下载开始升级上述过程升级失败,出现Quectel QDLoader 9008寻找解决方案,事了QPS t不行,最终使用这个Quectel_Customer_FW_Download_Tool软件解决下载链接: 所有下载驱动、固件、软…

C++数据结构02 队列及其应用

目录 队列及其特点 利用数组模拟队列的基本操作 创建队列 空队条件 元素入队 元素出队 模拟超市收银问题 队列操作 初始化 入队操作 出队操作 取出队首元素 STL模板中队列的基本使用 训练:约瑟夫问题 参考程序 队列及其特点 队列是一种特殊的线性表&am…

Mac如何卸载掉系统自带的预装软件吗 Mac第三方软件无法卸载是为什么 macbook系统软件怎么删除?

在使用Mac电脑时,有时候我们会发现系统预装的一些应用并不常用或者不符合个人需求,想要将它们卸载掉。然而,对于系统自带的软件,卸载并不简单,需要谨慎对待以免影响系统稳定性和功能正常运行。 一、Mac可以卸载掉系统自…

Android安全开发之 Provider 组件安全

Android系统中的Content Provider组件是一种用于在不同应用之间共享数据的机制。它提供了一种安全、可控的方式,允许应用访问其他应用的数据。然而,如果Provider组件的安全措施没有得到妥善实现,则可能会导致严重的安全漏洞,例如数…

C语言题目:选择排序

题目描述 用选择法对10个整数从小到大排序。 输入格式 输入10个无序的数字 输出格式 排序好的10个整数 样例输入 4 85 3 234 45 345 345 122 30 12 样例输出 3 4 12 30 45 85 122 234 345 345 代码分析 1. 引入头文件 代码首先引入了stdio.h头文件,这是C语言标…

比利时海外媒体宣发,发稿促进媒体通稿发布新形势-大舍传媒

引言 随着全球化的推进,海外媒体的影响力也日益增强。在这一背景下,比利时海外媒体的宣发工作成为了媒体通稿发布的新形势。大舍传媒作为一家专注于宣传推广的公司,一直致力于与比利时博伊克邮报(boicpost)合作&#…

用数据说话,效果好上一万倍,不是空口说白话的“好很多”

作为一名大数据开发者,我深知数据的有很大的魔力(我这句话就没用数据,听上去很无力)。数据不仅仅是数字和图表,它还能赋予我们强大的说服力和权威感。让我给你详细讲讲数据如何让理论插上翅膀。 目录 数据的“靠谱”…

文字悬停效果

文字悬停效果 效果展示 CSS 知识点 CSS 变量使用回顾-webkit-text-stroke 属性的运用与回顾 页面整体结构实现 <ul><li style"--clr: #e6444f"><a href"#" class"text">First</a></li><li style"--cl…

算法训练营day59

题目1&#xff1a;115. 不同的子序列 - 力扣&#xff08;LeetCode&#xff09; 这里的初始化第一列为1&#xff0c;表示t是空字符串 在s的子序列中有1种情况 递推公式也不同 class Solution { public:int numDistinct(string s, string t) {vector<vector<int>>…

如何看待有企业使用AI写代码,6个月研发提效超20%,未来AI对程序员会有多大影响?

AIGC对程序员来说&#xff0c;有远虑&#xff0c;无近忧。 目前看来&#xff0c;AI是程序员编写代码很好的助手&#xff0c;尤其在代码补全、照样子写代码、生成注释及文档等方面效果非常好&#xff0c;还有能省去很多查api的时间。 但即便如此&#xff0c;它也仅仅能解决造轮子…