java基础-抽象类(Abstract)

JAVA基础(二十二)——抽象类 java抽象类 阅读详情

什么是抽象类?

随着继承层次中一个个新子类的定义,类变得越来越具体,而父类则更一般,更通用。类的设计应该能够保证父类和子类共享特性。有时将一个父类设计的非常抽象,以至于他没有具体的实例,不能被实例化,只能被继承,这样的类叫做抽象类。

关键字:Abstract(可以用来修饰类和方法)

Abstract修饰类和方法的使用

1、Abstract 修饰类,抽象类

1)不可被实例化;

2)抽象类有构造器(凡是类都有构造器)

3)抽象方法所在的类,一定是抽象类

4)抽象类中可以没有抽象方法

 

2、Abstract 修饰方法,抽象方法

1)格式,没有方法体,包括{},如public abstract void eat();

2)抽象方法只保留方法的功能,而具体的执行,交给继承抽象类的子类,由子类重写此方法。

3)若子类继承了抽象类,并且重写了所有抽象方法,则此类是一个“实体类”,既可以实例化。

4)若子类继承了抽象类,没有重写抽象类中所有的抽象方法,以为着此类中仍有抽象方法,则此类还是一个抽象类。

3、Abstract 使用的限制

      不能用Abstract修饰属性、私有方法、构造器、静态方法、final方法

抽象类练习:

编写一个Employee类,声明为抽象类,包含如下三个属性:name,id,salary。提供必要的构造器和抽象方法:work() 。对弈Manager类来说,他既是员工,它还具有奖金(bonus)的属性,请使用继承的思想,设计CommonEmployee类和Manager类,要求类中提供必要的方法进行属性访问。

Code

class CommonEmployee extends  Employee {

    @Override
    public void work() {
        System.out.println("在流水线工作");
    }

}

class Manager extends  Employee{
    private String bonus;

    public String getBonus() {
        return bonus;
    }

    public void setBonus(String bonus) {
        this.bonus = bonus;
    }

    @Override
    public void work() {
        System.out.println("监督员工工作,提高员工工作效率");
    }
}

abstract class Employee{
    private int id;
    private String name;
    private Double salary;

    public abstract  void work();

    public Double getSalary() {
        return salary;
    }

    public int getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public void setId(int id) {
        this.id = id;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setSalary(Double salary) {
        this.salary = salary;
    }
}

public class TestAbstract {
    public static void main(String[] arg){
        Employee e = new Manager();
        e.work();

        Employee e1 = new CommonEmployee();
        e1.work();
    }
}

代码输出

监督员工工作,提高员工工作效率
在流水线工作

Java(二十)abstract抽象类 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。被static关键字修饰的方法可以通过类名直接调用,但是同时被abstract关键字修饰的方法,是没有方法体的,没有办法调用一个没有方法体的方法。anstract关键字修饰的方法是抽象方法,子类是一定要重写的,final关键字修饰的方法是“断子绝孙”的,二者是冲突的。1:抽象类可以没有抽象方法,但是有抽象方法的类一定是抽象类。 阅读详情

相关推荐

Java(三十)Abstract 抽象类

在Java中,我们通过在类前添加关键字abstract(抽象的)来定义抽象类。如下所示 :抽象类的定义格式:直接给类名加上 abstract(抽象关键字) 就行了。public abstract class 类名{}抽象方法的定义格式:不写方法体,直接分号结束。前面再加一个 abstract(抽象关键字)public abstract 返回值类型 方法名(参数列表);必须使用Abstract关键字修饰含有0个或多个用abstract修饰的方法(抽象方法)抽象方法没有方法体。

技术博客 1142

Java面向对象编程(七)

abstract表示抽象的,可以用来修饰类和方法。用abstract关键字来修饰一个类,这个类叫做抽象类1、抽象类不能被实例化。抽象类是用来被继承的,抽象类的子类必须重写父类的抽象方法,并提供方法体。若没有重写全部的抽象方法,仍为抽象类。2、抽象类中一定有构造器,便于子类实例化时使用3、开发中都会提供抽象类的子类,让子类对象实例化完成相关的操作。4、抽象类中可以没有抽象方法用abstract关键字来修饰一个方法,这个方法叫做抽象方法1、抽象方法只有方法的声明,没有方法体。

zssxcj的博客 1335

Java中抽象类与抽象方法、abstract的使用

抽象类与抽象方法、abstract的使用

小贺想改变 2738

java练习---抽象类

编写一个Employee类,声明为抽象类,包含如下三个属性:name,id,salary。提供必要的构造器和抽象方法:work()。对于Manager类来说,他既是员工,还具有奖金(bonus)的属性。请使用继承的思想,设计Employee类和Manager类,要求类中提供必要的方法进行属性访问。

李子翔 959

逆变器并联--下垂控制引入虚拟阻抗

说明传统下垂控制的缺点、分析虚拟阻抗的原理和实现方法

weixin_58670090的博客 1万+

Keil MDK打开别人工程总报错?手把手教你修复‘找不到main.o’和‘未定义’的路径问题

本文详细解析Keil MDK工程移植时常见的'找不到main.o'和'未定义'编译错误,提供从路径修复到宏定义配置的完整解决方案。通过系统化的检查清单和预防措施,帮助开发者快速解决MDK工程迁移问题,提升嵌入式开发效率。

weixin_28724661的博客 401

Java基础学习day14【谷】

abstract不能去修饰方法和构造器abstract不能修饰静态方法、私有方法、final方法、final类。

m0_47711130的博客 1416

OpenClaw 完整命令文档(2026.3.13 最新版)

本文档为OpenClaw 2026.3.13通用版使用指南,包含核心命令大全。主要内容包括:1)基础安装/升级/卸载命令;2)ClawHub扩展安装命令(支持飞书/钉钉/企微等平台连接);3)Skills技能安装命令(实现聊天/搜索/记忆等功能);4)飞书机器人授权与配对命令;5)启动运行与配置检查命令;6)工作区与记忆管理命令;7)插件安全设置命令;8)调试日志命令;9)飞书机器人一键部署简化流程。文档特别强调飞书机器人部署需feishu扩展+对应技能+用户授权的完整配置,所有命令均需在终端执行,安装后需

MKliudan的专栏 1294

初识抽象类

abstract:抽象的,可以用来修饰类、方法 1.abstract修饰类:抽象类 1)不可被实例化 2)抽象类有构造器 (凡是类都有构造器) 3)抽象方法所在的类,一定是抽象类。 4)抽象类中可以没有抽象方法。 >当我们设计一个类,不需要创建此类的实例时...

chuxi1830的博客 286

Linux云服务器上搭建《僵尸毁灭工程》私服全流程指南(避坑版)

本文详细介绍了在Linux云服务器上搭建《僵尸毁灭工程》私服的全流程指南,包括环境准备、SteamCMD安装、游戏服务器部署、内存优化配置及高级调优技巧。特别针对常见问题提供解决方案,帮助玩家快速搭建稳定的私服环境。

solidity8miner的博客 606

【Windows Server 2019】DNS服务器的配置与管理——DNS正向解析

博文介绍了如何使用正向解析区,包括创建和添加并验证,以及术语 主机记录,别名,邮件交换记录的解释。

VMware, Windows, Linux, Cisco, Container, Kubernetes, Kali 1万+

Java中的抽象类& abstract 关键字

本文介绍了抽象类的概念与应用。抽象类通过abstract关键字修饰,不能实例化但可包含抽象方法和普通方法。抽象类必须被继承,子类需重写所有抽象方法。本文以图形类为例,说明抽象类的作用是提供继承基础和多态支持,同时通过编译器强制检查抽象方法实现。还讨论了多层继承中抽象类的使用规则,以及匿名对象在抽象类应用中的特点与局限。抽象类在面向对象编程中扮演着重要角色,既规范了类的设计,又实现了代码复用和多态特性。

Y409001的博客 1184

【第1章>第5节】SOM自组织映射网络的理论学习与MATLAB仿真

自组织映射网络(Self-Organizing Map,SOM)是一种无监督学习的人工神经网络,由芬兰学者Teuvo Kohonen于1981年提出,也被称为Kohonen网络。它的主要功能是将高维输入数据映射到低维(通常是二维)的离散网格上,同时保持输入数据的拓扑结构,即相邻的输入数据在映射后的网格上也相邻。

FPGA/MATLAB学习教程/源码/项目合作开发 403

Java抽象类(abstract)

抽象类不一定要包含abstract方法,一旦包含了abstract方法吧,则这个类必须声明为abstract abstract只能修饰类和方法,不能修饰属性和其它的 如果一个类继承了抽象类,则它必须实现抽象类的所有抽象方法,除非它自己也声明为abstract类 抽象方法不能使用private、final和static来修饰

2303_81628694的博客 214

Windows 11 WSL2环境下OpenClaw部署的兼容性问题分析与解决方案研究

本文研究了OpenClaw在Windows 11 WSL2环境下的部署方案。WSL2通过无缝集成Linux与Windows系统,为OpenClaw提供了良好的运行环境,支持GPU加速和跨平台开发。文章详细分析了硬件配置要求(推荐8核CPU/16GB内存/NVMe SSD)、系统选择(Windows 11 Pro+Ubuntu 22.04)以及部署步骤,包括WSL2启用、Linux发行版安装、Python/Node.js/Redis等依赖配置。通过优化.wslconfig文件参数(如内存分

博客 2284

【国密】基于SM2的协同签名与协同解密方案

两方协同签名指客户端与服务端协同完成签名、验签操作,具体实现方案参考了信工所专利[3]。在业务应用中,两方或多方的协同签名一般采用门限签名方案可以用来构造。门限密码算法在多方协作的相关场景中应用十分广泛,可以实现数据联合授权、认证、密钥安全恢复、密钥安全交换等需求,在诸多分布式多方计算协议中均可见其身影。在上述两方协同签名方案中,最巧妙的地方在于签名值s分量的构造,通过一些列数学变换,得以恢复。以下从两方协同签名方案介绍入手,介绍门限密码在协同签名中的应用。解决上述问题的关键在于门限密码算法的巧妙构造。

听雨草堂 8392

Java基础---抽象类 abstract

抽象类是面向对象编程中一种强大的工具,它们允许开发者定义通用的模板和接口契约,强制子类实现特定的行为,并提供代码复用和组织化的优势。

jlihan的博客 1万+

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Java基础:抽象类abstract

示例代码:         用abstract关键字修饰的类称为抽象类(不包含static修饰的类),方法称为抽象方法,抽象方法没有方法实现,抽象类是用于继承的父类,抽象类不能用new创建,抽象方法只能在子类中实现。 abstract class Door {         public abstract void open();     public abstract void clo...

QQhelphelp的博客 276

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

java抽象类关键字_Java 抽象类 abstract关键字

抽象类前使用abstract关键字修饰,则该类为抽象类抽象的方法是不完全的,它只是一个方法签名而完全没有方法体抽象的方法没有花括号继承抽象类的子类必须覆盖父类的抽象函数(即:子类继承抽象类以后,抽象类里面所有的抽象函数都必须要被子类所实现),否则这个类自己就成为抽象类应用:在某种情况下,某个父类只知道子类应该包含什么方法,但无法准确地知道子类如何实现这些方法从多个具有相同特征的类中抽象出一个抽象类...

weixin_30478241的博客 2129

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

java 如何判断抽象类_JAVA抽象类和抽象方法(abstract)

一、抽象(abstract)的使用当父类的某些方法不确定时,可以用abstract关键字来修饰该方法[抽象方法],用abstract来修饰该类[抽象类]。我们都知道,父类是将子类所共同拥有的属性和方法进行抽取,这些属性和方法中,有的是已经明确实现了的,有的还无法确定,那么我们就可以将其定义成抽象,在后日子类进行重用,进行具体化。这样,抽象类也就诞生了。例如,定义了“动物”父类,其中“动物名称”和“...

weixin_39600510的博客 2059

java中的抽象类(abstract)

父类知道每个子类都要做某个行为,但每个子类要做的情况不一样,父类就定义为抽象类,交给子类去重写实现,我们抽出这样的抽象类,就是为了更好地支持多态。2.一个类继承了抽象类,必须重写为抽象类的全部抽象方法,负责自己也是抽象类。猫的数据有:名字,行为是猫猫叫。1.抽象方法,必须用abstract修饰,只有方法签名,不能有方法体。abstract,它就是抽象的意思,可以用来修饰类,成员方法。abstract修饰类,就是抽象类,修饰方法,就是抽象方法。狗的数据有:名字,行为是汪汪叫,用面向对象编程设计该程序。

wjinndnd的博客 313

[Java进阶] abstract 抽象类与继承

1. abstract(抽象类和抽象方法) 2. 抽象类与继承 3. 抽象类案例

花与树 3163

java基础案例:abstract(抽象类)的练习

/*雇员示例:需求:公司中程序员有姓名,工号,薪水,工作内容 项目经理除了有姓名,工号,薪水,还有奖金,工作内容 对给出需求进行数据建模*//*分析:        在这个问题领域中,先找出涉及的对象。        通过名词提炼法:        程序员:             属性:姓名,工号,薪水             行为:工作        经理:         属性:姓名,工号,...

Z1888202的博客 1173

Java之抽象类(Abstract Class)与抽象方法(Abstract Method)

抽象类(Abstract Class) 抽象类 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。 抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。 由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用。也是因为这个原因...

Camel 1292

java abstract关键字 抽象类

abstract可以修饰: 方法和类 abstract修饰类(抽象类): 抽象类不能被实例化 思考 :抽象类有没有构造器?有 - 因为子类对象的实例化过程 非抽象子类继承抽象类后必须重写抽象父类中的所有抽象方法 如果非抽象子类不想重写抽象父类中的抽象方法,那么该子类也需要变成抽象子类。 抽象子类可以重写抽象父类中的抽象方法, 如果直接抽象父类重写了间接抽象父类中的抽象方法那么非抽象子类就不需要再重写该抽象方法 抽象类中不是必须有抽象方法的。 abstract修饰方法(抽象方法): 抽象方法没有方法体

超级大洋葱的博客 333

【JAVA】 abstract class抽象类和interface接口有什么区别?

含有 abstract 修饰符 class 即为抽象类,抽象类不能创建实际对象,含有抽象方法的抽象类必须定义为 abstract class。 接口可以说成是一种特殊的抽象类,接口中的所有方法都必须是抽象的,接口中的方法定义默认为 public abstract 类型,接口中的成员产量类型默认为 public static final。 两者的区别: a. 抽象类可以有构造方法,接口中不能有构造方...

疯 416
上一篇: 设计模式-单例模式(Singleton)
下一篇: 设计模式-模板方法(TemplateMethod)
Mark_XC
博客等级 码龄9年 16粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值