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

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 methods
  public 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() method
  public void draw() {
    System.out.println("Drawing a  rectangle...");
  }

  // Provide an implementation for inherited abstract getArea() method
  public double getArea() {
    return width * height;
  }

  // Provide an implementation for inherited abstract getPerimeter() method
  public double getPerimeter() {
    return 2.0 * (width + height);
  }
}


 


http://www.kler.cn/news/321472.html

相关文章:

  • SQL 查询优化与实战
  • Laravel部署后,CPU 使用率过高
  • 为什么不用tensorflow而用opencv
  • 企微群管理软件:构建高效社群运营的新引擎
  • C 标准库 - <ctype.h>
  • 实战OpenCV之色彩空间转换
  • 第一个maven web工程(eclipse)
  • 【UE5】将2D切片图渲染为体积纹理,最终实现使用RT实时绘制体积纹理【第三篇-着色器光照】
  • 代码随想录打卡Day39
  • 【devops】devops-ansible模块介绍
  • 卷积神经网络-迁移学习
  • Spire.PDF for .NET【页面设置】演示:对PDF 文件进行分页
  • 【ASE】第一课_双面着色器
  • 增量式编码器实现原理
  • 使用python爬取豆瓣网站?如何简单的爬取豆瓣网站?
  • FPGA中系统门数和逻辑门数的理解
  • 智视臂传-AI视觉触感未来丨OPENAIGC开发者大赛高校组AI创作力奖
  • 计算机毕业设计 基于Hadoop的智慧校园数据共享平台的设计与实现 Python 数据分析 可视化大屏 附源码 文档
  • 性能设计模式
  • 1.6 判定表
  • 【C++与数据结构】搜索二叉树(BinarySearchTree)
  • 数据仓库-数据质量规范
  • 问:聊聊JAVA中的共享锁和独占锁?
  • 了解针对基座大语言模型(类似 ChatGPT 的架构,Decoder-only)的重头预训练和微调训练
  • 前端Vue 基础学习1
  • 暗黑破坏神4新资料片憎恶之躯即将上线,第六赛季暗黑破坏神4搬砖如何获得最大收益?
  • 响应式的几种解决方案——媒体查询、flex、grid、多列布局、瀑布流和数据可视化屏幕的缩放处理
  • 极狐GitLab 17.4 重点功能解读【三】
  • crontab -e 修改为vim 编辑
  • Jenkins 2.477版本升级