当前位置: 首页 > news >正文

第一百零九节 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);}
}


 

相关文章:

  • 动手学深度学习33 单机多卡并行
  • 【 EI会议 | 西南大学主办 | 往届均已实现检索】第三届神经形态计算国际会议(ICNC 2024)
  • hana 中的缓存视图功能,类似ORACLE 中的 物化视图功能
  • Tinymce富文本编辑器在el-dialog中遮挡的问题
  • Jenkins 内置变量 和变量作用域
  • 【成品设计】基于物联网的停车管理系统设计与实现
  • Spring Boot:Java 应用开发高效之道
  • 数据结构之初识泛型
  • idea有这个类却报红,无法用快捷键找到
  • k8s+RabbitMQ单机部署
  • 面试题——Spring
  • 我的创作纪念日 CF1620D Exact Change 题解
  • Python - 处理电子书的库
  • 【代码随想录训练营】【Day 49+】【动态规划-8】| Leetcode 121, 122, 123
  • C#使用OpenXml读取Word、PPT、Excel文档内容
  • [分享]iOS开发-关于在xcode中引用文件夹右边出现问号的解决办法
  • 【刷算法】求1+2+3+...+n
  • 08.Android之View事件问题
  • 3.7、@ResponseBody 和 @RestController
  • crontab执行失败的多种原因
  • egg(89)--egg之redis的发布和订阅
  • express.js的介绍及使用
  • Fastjson的基本使用方法大全
  • iOS帅气加载动画、通知视图、红包助手、引导页、导航栏、朋友圈、小游戏等效果源码...
  • Java 最常见的 200+ 面试题:面试必备
  • Js基础知识(一) - 变量
  • Objective-C 中关联引用的概念
  • overflow: hidden IE7无效
  • python docx文档转html页面
  • Python爬虫--- 1.3 BS4库的解析器
  • spring-boot List转Page
  • ucore操作系统实验笔记 - 重新理解中断
  • vue--为什么data属性必须是一个函数
  • 彻底搞懂浏览器Event-loop
  • 动态魔术使用DBMS_SQL
  • 经典排序算法及其 Java 实现
  • 聚类分析——Kmeans
  • 前端 CSS : 5# 纯 CSS 实现24小时超市
  • 移动端解决方案学习记录
  • 译米田引理
  • 【干货分享】dos命令大全
  • const的用法,特别是用在函数前面与后面的区别
  • ​用户画像从0到100的构建思路
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • #数学建模# 线性规划问题的Matlab求解
  • ( 用例图)定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功能的具体实现
  • (1/2)敏捷实践指南 Agile Practice Guide ([美] Project Management institute 著)
  • (13):Silverlight 2 数据与通信之WebRequest
  • (7) cmake 编译C++程序(二)
  • (Arcgis)Python编程批量将HDF5文件转换为TIFF格式并应用地理转换和投影信息
  • (C语言)逆序输出字符串
  • (c语言+数据结构链表)项目:贪吃蛇
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (六)c52学习之旅-独立按键
  • (南京观海微电子)——I3C协议介绍