Java基础(抽象类)

文章目录

  • 一、抽象类特性
    • 代码示例
  • 二、抽象类注意事项
  • 三、抽象类和接口的比较

刚刚学了Python的多态和抽象类,就想着跟Java的比对一下。

一、抽象类特性

  1. 抽象类不能被实例化:抽象类只能用作其他类的基类,不能直接创建实例。
  2. 子类必须实现所有抽象方法:子类必须实现抽象类中定义的所有抽象方法,否则会在编译时报错。如果子类没有实现所有抽象方法,它也会被视为抽象类。
  3. 抽象方法没有实现:抽象方法没有具体的实现代码,只有方法签名。
  4. 抽象类可以包含非抽象方法:抽象类中除了抽象方法外,还可以包含普通的方法和属性。
  5. 抽象类可以有构造函数:抽象类可以定义构造函数,但不能被实例化。

代码示例

// 抽象类
abstract class Animal {String name;// 构造函数public Animal(String name) {this.name = name;}// 普通方法public void eat() {System.out.println(name + " is eating.");}// 抽象方法public abstract void move();
}
// 继承抽象类
class Dog extends Animal {// 构造函数public Dog(String name) {super(name);}// 实现抽象方法@Overridepublic void move() {System.out.println(name + " is running.");}
}public class Main {public static void main(String[] args) {Dog dog = new Dog("Buddy");dog.eat(); // 输出:"Buddy is eating."dog.move(); // 输出:"Buddy is running."// 抽象类不能实例化,会报错// Animal a = new Animal();}
}

在这个例子中,我们定义了一个抽象类Animal。

  • 它有一个name属性
  • 两个方法:eat和move。
    • eat方法有一个默认的实现(打印出name + " is eating."),
    • move方法没有具体的实现,因此它是一个抽象方法,必须由子类实现。

我们还定义了一个Dog类,它继承自Animal。
Dog类必须实现Animal类中定义的抽象方法move,并提供具体的实现代码(打印出name + " is running.")。

在Main类中,我们创建了一个Dog对象,并调用它的eat和move方法。eat方法使用了抽象类中的默认实现,而move方法使用了Dog类中的具体实现。

这个例子包含了抽象类的所有特性:抽象方法、默认实现、必须实现、继承等。
它展示了如何使用抽象类来定义一个通用的类,并由子类提供具体的实现。

二、抽象类注意事项

  1. 抽象类的命名应该以Abstract开头,标识出它是一个抽象类。
  2. 由于抽象类不能被实例化,因此它的主要作用是用来继承和实现。实际上,抽象类的存在是为了更好地实现程序的复用。
  3. 抽象类中可以有非抽象方法,这些方法可以提供一些默认的实现,子类可以选择性地重写这些方法。
  4. 抽象类中可以有抽象方法,它们没有具体的实现代码,只有方法签名。这意味着子类必须实现这些方法,并提供具体的实现代码。
  5. 抽象类和抽象方法的存在可以提高程序的可读性和可维护性,同时也能够规范子类的行为。

总之,Java中的抽象类是一种不能被实例化的类,它定义了其他类的通用接口和行为。使用抽象类可以提供代码的规范性和灵活性,强制子类实现抽象方法,从而提高代码的可靠性和可维护性。在使用抽象类时,需要注意抽象类不能被实例化、子类必须实现所有抽象方法等事项。

三、抽象类和接口的比较

  1. 定义方式:
  • 抽象类是使用 abstract 关键字定义的类。它可以包含抽象方法和非抽象方法。
  • 接口是使用 interface 关键字定义的。它只能包含抽象方法和常量。
  1. 继承与实现:
  • 一个类只能继承一个抽象类,而一个类可以实现多个接口。
  • 抽象类通过继承来扩展现有的类,并且可以提供默认的实现。子类可以使用 extends 关键字继承抽象类。
  • 接口通过实现来定义新的行为,并且不提供任何默认的实现。类可以使用 implements 关键字实现接口。
  1. 构造函数:
  • 抽象类可以有构造函数,并且可以被子类调用。
  • 接口不能有构造函数,因为它们不能被实例化。
  1. 成员变量:
  • 抽象类可以有实例变量、静态变量和常量。
  • 接口只能有静态常量。
  1. 方法实现:
  • 抽象类可以包含具体方法的实现,子类可以直接使用或重写这些方法。
  • 接口只能包含抽象方法的声明,实现接口的类必须提供方法的具体实现。
  1. 多态性:
  • 由于Java中只支持单继承,子类只能继承一个抽象类,但可以实现多个接口。这使得接口在实现多态性方面更加灵活。

选择抽象类还是接口,取决于具体的需求。如果需要定义一些通用的行为和属性,并且希望提供默认的实现,可以使用抽象类。如果需要定义一组完全抽象的行为,并且希望不同的类以不同的方式来实现这些行为,可以使用接口。通常情况下,接口更适合用于实现多态性和松耦合的设计。

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

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

相关文章

表单生成器基于(form-create-designer+ant design vue)

效果展示 1.源码地址: 前端:https://gitee.com/houshixin/form-design-ui 后端:https://gitee.com/houshixin/form-design-web 2.单独使用前端的时候就把请前后台的接口注释就可以 3.都启动的话: 1).先导入数据库 2.表…

3. Mybatis 中SQL 执行原理

2. Mybatis 中SQL 执行原理 这里有两种方式,一种为常用的 Spring 依赖注入 Mapper 的方式。另一种为直接使用 SqlSessionTemplate 执行 Sql 的方式。 Spring 依赖注入 Mapper 的方式 Mapper 接口注入 SpringIOC 容器 Spring 容器在扫描 BeanDefinition 阶段会扫…

C++代码重用:继承与组合的比较

目录 一、简介 继承 组合 二、继承 三、组合 四、案例说明 4.1一个电子商务系统 4.1.1继承方式 在上述代码中,Order类继承自User类。通过继承,Order类获得了User类的成员函数和成员变量,并且可以添加自己的特性。我们重写了displayI…

C# 关于当ObservableCollection增删查改元素时,触发事件用例

ObservableCollection 类提供了一种实时监测集合变化的机制,可以通过订阅 CollectionChanged 事件来响应集合的添加、移除和重置等变化。 using System; using System.Collections.ObjectModel; using System.Collections.Specialized;class Program {static void …

【java八股文】之Redis基础篇

1、Redis有哪几种基本的数据类型 字符串类型:用于存储文章的访问量Hash:用来存储key-value的数据结构,当单个元素比较小和元素数量比较少的时候 ,底层是用ziplist存储。通常可以用来存储一些对象之类的List: 底层采用的quicklist …

2024儿童台灯哪个品牌更护眼推荐?五款知名品牌台灯推荐

只要有了娃,家长的吃穿用度可能不会特别讲究,但总想给孩子好的东西,尤其是关系到他们身心健康的,可以说是一掷千金。特别是眼睛视力方面,特别担心会遗传给孩子,自从他上幼儿园,我就一直在物色一…

WPF 获取父容器控件的宽度

在WPF中,如果你想要获取一个控件的父容器(Parent)的宽度,你可以通过以下方式访问: double parentWidth this.Parent.ActualWidth;这里的 this 指的是当前控件实例。.Parent 属性返回直接父容器,.ActualWi…

WSL不同版本的Ubuntu更换清华镜像,加速Ubuntu软件下载速度

文章目录 不同版本的Ubuntu使用清华镜像,加速Ubuntu软件下载速度1. 备份源软件配置文件2. 复制镜像源3. 修改软件源配置文件4. 更新软件包列表,升级软件包等内容5. 从仓库中下载其它软件可能存在的问题 不同版本的Ubuntu使用清华镜像,加速Ubu…

鸿蒙Harmony--LocalStorage--页面级UI状态存储详解

走的太急疼的是脚,逼的太紧累的是心,很多时候,慢一点也没关系,多给自己一些耐心和等待,保持热爱,当下即是未来,生活自有安排! 目录 一,定义 二,LocalStorageProp定义 三…

【面试宝典】如何对MySQL进行优化?

一、数据库设计 所有字段都设置默认值。尽可能使用较小的整数类型。尽可能定义字段为NOT NULL,除非该字段需要NULL。尽可能使用固定大小的记录格式,如CHAR,除非变长字段用VARCHAR。二、数据库使用 尽量使用长连接。使用 EXPLAIN 查看复杂SQL执行方式,进行优化。使用 LIMIT …

2024 CKA 题库 | 7、调度 pod 到指定节点

不等更新题库 文章目录 7、调度 pod 到指定节点题目:考点:参考链接:解答:更换 context创建 pod yaml创建 pod 检查 7、调度 pod 到指定节点 题目: 设置配置环境: [candidatenode-1] $ kubectl config use-context k8sTask 按如下要求调度一个 pod&…

Java Web 开发 从入门到实战(课后习题)

第1章 Web 前端基础 1.在以下标记中&#xff0c;用于改置页面标题的是&#xff08;&#xff09;。 A. <title> B. <caption> C. <head> D. <html> 注&#xff1a;caption是表格名称&#xff08;标题&#xff09; 2. 若设计网页的背景图形为bg.png&…

使用Mixtral-offloading在消费级硬件上运行Mixtral-8x7B

Mixtral-8x7B是最好的开放大型语言模型(LLM)之一&#xff0c;但它是一个具有46.7B参数的庞大模型。即使量化为4位&#xff0c;该模型也无法在消费级GPU上完全加载(例如&#xff0c;24 GB VRAM是不够的)。 Mixtral-8x7B是混合专家(MoE)。它由8个专家子网组成&#xff0c;每个子…

Linux--LNMP架构及应用部署

4.2 LNMP架构及应用部署 4.2.1构建LNMP网站平台 为了与Nginx、PHP环境保持一致&#xff0c;仍选择采用源代码编译的方式安装MySQL组件。以5.5.22 版本为例&#xff0c;安装过程如下所述。 &#xff08;1&#xff09;编译安装MySQL。 [rootnode01 ~]# yum -y install ncurses-…

Java中锁的解决方案

前言 在上一篇文章中&#xff0c;介绍了什么是锁&#xff0c;以及锁的使用场景&#xff0c;本文继续给大家继续做深入的介绍&#xff0c;介绍JAVA为我们提供的不同种类的锁。 JAVA为我们提供了种类丰富的锁&#xff0c;每种锁都有不同的特性&#xff0c;锁的使用场景也各不相…

Java 面试题 - 多线程并发篇

线程基础 创建线程有几种方式 继承Thread类 可以创建一个继承自Thread类的子类&#xff0c;并重写其run()方法来定义线程的行为。然后可以通过创建该子类的实例来启动线程。 示例代码&#xff1a; class MyThread extends Thread {public void run() {// 定义线程的行为} …

JUC02同步和锁

同步&锁 相关笔记&#xff1a;www.zgtsky.top 临界区 临界资源&#xff1a;一次仅允许一个进程使用的资源成为临界资源 临界区&#xff1a;访问临界资源的代码块 竞态条件&#xff1a;多个线程在临界区内执行&#xff0c;由于代码的执行序列不同而导致结果无法预测&am…

java : 通过jdbc读取hive(2.3)中的数据

一、准备好hive的环境&#xff0c;创建表(例如userinfo),添加数据。 create table userinfo(x string, y string); insert into userinfo values(tju,beiyang);二、启动hive服务 hive --service hiveserver2 三、项目中添加依赖 <dependency><groupId>org.apache.…

ubuntu20.04+opencv+vscode

第一次接触C的opencv&#xff0c;需要在vscode中编写cv2代码并调试。根据vscode配置C和Opencv&#xff08;ubuntu18.04&#xff09;能够正确配置&#xff0c;是一个靠谱的教程&#xff0c;现在记录一下过程&#xff0c;方面后续参考。 1、安装依赖 在终端中安装依赖&#xff…

近视的孩子用什么灯?学生考研护眼台灯推荐

随着时代快速发展&#xff0c;2022年我国近视人数达到了7亿&#xff0c;呈现低龄化趋势&#xff0c;儿童及青少年人数占了53.8%。现在学业负担都很重&#xff0c;每个家长都不希望自己的孩子近视或加深近视了&#xff0c;都会想尽一切办法保护视力。而护眼台灯就成了家长购买台…