【Java面向对象】抽象类详解

Java面向对象编程:多态、抽象类与接口详解 面向对象编程(OOP)是现代软件开发的核心范式,其中多态、抽象类和接口是构建灵活系统的关键技术。多态通过动态绑定实现运行时行为变化,是框架设计和算法策略的基础。抽象类作为不完整的模板,强制子类实现特定逻辑,常用于模板方法模式。接口定义纯粹的行为契约,支持多重继承,是实现松耦合的关键。在Java开发中,合理运用这些特性能够提升代码复用性、扩展性和维护性,是构建企业级应用的重要技能。本文通过实际案例解析这些概念在Spring框架、集合操作等场景中的应用实践。 阅读详情

所谓的抽象类,其实就是一种概念,只不过这种概念需要我们用Java编程语言将其表达出来而已。  就好比汽车中的概念汽车,它只存在于一张图片、一个视频中,我们并不能看到它的实体,但通过这种概念,就可以造出实际的汽车,故概念汽车不能New出对象,等等。

  以上用“概念汽车”来类比“抽象类”,由此更加快速地理解抽象中的各个特性。

抽象类语法格式:

abstract class 类名 {
	···
}

抽象类的特性

抽象类特点:

  1. 抽象类不能实例化 (new)
  2. 有抽象方法的类,一定是抽象类
  3. 抽象类中可以没有抽象方法,即可以包含抽象方法和非抽象方法
  4. 任何继承抽象类的子类必须实现父类的所有抽象方法,除非该子类也是抽象类。

抽象类的成员特点:

  • 成员变量
  • 可以有成员变量
  • 可以有常量
  • 成员方法
  • 可以有抽象方法
  • 可以有非抽象方法
  • 构造方法
  • 可以有构造方法的,需要对抽象类的成员变量进行初始化
//验证抽象类的特点
abstract class Animal {
	String name = "哮天犬"; //成员变量
	final int num = 10; //成员常量
	
	public Animal() { //构造方法
		System.out.println("我是抽象类的构造方法");
	}
	
	public abstract void eat(); //抽象方法
	
	public void run() {} //非抽象方法(此方法时空实现)
}

class Dog extends Animal {
	public void barking() {
		System.out.println(name);
		System.out.println(num);
	}
	
	@Override
	public void eat() {
		//空实现也是实现
	}
}

public class Main {
	public static void main(String[] args) {
		Dog d = new Dog();
		d.barking();
	}
}
/*输出:
	我是抽象类的构造方法
	哮天犬
	10
*/

抽象方法的特性

语法格式:
  public abstract 返回值类型 方法名(参数);

abstract不能与以下关键字共同修饰一个方法:

  1. abstract不能与private共同修饰一个方法。
  2. abstract不能与static共同修饰一个方法。
  3. abstract不能与final共同修饰一个方法。

抽象方法特性:

  1. 抽象方法没有方法体({}),抽象方法不能被声明成 final 和 static

权限修饰符 abstract 返回值类型 方法名 ( );
例如:public abstract void eat();

  1. 只有覆盖了抽象类中所有的抽象方法后,其子类才可以创建对象。否则该子类还是一个抽象类。

快速理解抽象方法的使用:

//研发部员工 
abstract class Developer {
	public abstract void work();//抽象函数。需要abstract修饰,并分号;结束
}

//JavaEE工程师
class JavaEE extends Developer{
	public void work() {
		System.out.println("正在研发淘宝网站");
	}
}

//Android工程师
class Android extends Developer {
	public void work() {
		System.out.println("正在研发淘宝手机客户端软件");
	}
}


//测试类
public class Main {
	public static void main(String[] args) {
		JavaEE ee = new JavaEE();
		ee.work();
		
		Android an = new Android();
		an.work();
	}
}

【Java基础】 Java面向对象之抽象类、接口详解 阅读详情

相关推荐

41、Java面向对象编程:继承、多态与抽象类详解

本文详细解析了Java面向对象编程中的核心概念,包括访问修饰符的作用、继承链的实现、多态性与动态绑定的机制、抽象类与抽象方法的定义,以及Object类的基本功能。通过具体代码示例,阐述了如何利用这些特性构建灵活且可维护的代码结构。同时,还介绍了这些概念在实际开发场景中的应用,如游戏开发和图形界面开发,并总结了使用过程中需要注意的常见问题。

dapp9builder的博客 60

java 抽象类 对象_JAVA面向对象-----抽象类

1抽象类为什么使用抽象类1:定义Dog类有颜色属性和叫的方法2:定义Bird类有颜色属性和叫的方法3:定义其父类Animal1:颜色的属性可以使用默认初始化值。2:叫的方法在父类中如何定义?1:狗是旺旺2:鸟是叽叽喳喳3:可以将父类的方法定义为狗叫让鸟继承父类重写叫的方法1:鸟怎么确定是否要重写父类方法。2:不重写,编译和运行都没有问题,只是执行鸟叫的方法就会出现狗叫4:父类的方法很难确定。cla...

weixin_35572076的博客 544

自适应IIR格型滤波器的Matlab实现

概述 在现有的众多抑制窄带干扰的信号处理手段中,时域自适应陷波干扰抑制技术具有实现简单、抗干扰性能好等优点。IIR陷波器按照结构可以分为直接型和格型两种。相比自适应直接型IIR陷波器,自适应格型IIR陷波器不仅可以准确地控制滤波器的陷波频率,也可以准确地调整陷波器的带宽。 传递函数 二阶自适应IIR格型陷波器的传递函数H(z)为: 其中α与陷波带宽有关,β与陷波频率有关;对应的结构如下图所示: Matlab算法实现 ...

剑藏锋的博客 2799

面向对象之抽象类

抽象类(abstractclass) 定义:使用abstract关键字所修饰的类叫抽象类 作用:通过继承它实现多态,后期绑定,可以为将来要实现的东西做好接口,实现重用性。 为什么要使用抽象类和抽象方法? a:防止父类被实例化,因为抽象类不能被实例化 b:体现多态思想:同一类型的对象,在运行的时候表现出不同的形态。 c:减少代码的重用 抽象类和抽象方法就是用来被继承的子程序进行重写...

wangminshe89 200

python机器人编程——用python实现一个写字机器人

本篇我们构建一个可以跟人一样写字的机器人python软件。实现如下功能:打开一个写字板,人类在屏幕上写或画出任意形状,机器人同步在纸面上画出和人类一样的形状,就好像人类在远程操控机械臂,又或是机械臂是人的另一只手。这个软件是可以扩展的,如果连上互联网,可以实现人在北京写了一行字,在上海的机器臂同时也在自己的本子上写了一行字。

JAMES费的空间 7992

Vue3集成百度实时语音识别

Vue3集成百度实时语音识别

weixin_61769998的博客 548

面向对象_抽象类的成员特点

/* 抽象类的成员特点: 成员变量:既可以是变量,也可以是常量 构造方法:有。 用于子类访问父类的数据初始化。 成员方法:既可是抽象的,也可以是非抽象的。 抽象类的成员方法特性: A:抽象方法:强制要求子类做的事情 B:非抽象方法:子类继承的事情,提高代码的复用性。 */ abstract class Animal{ public int num = 10;

辐_射的博客 2408

OpenHarmony-AI调研

基于OpenHarmony-5.0.0版本以及laval社区等网络资料调研当前OH上的AI发展情况。

qqq1112345的博客 1368

面向对象:八、抽象类

/* 抽象类:用abstract关键字声明的类为抽象类 很多具有相同特征和行为的对象可以抽象为一个类 很多具有相同特征和行为的类可以抽象为一个抽象类 1、抽象类可以没有抽象方法,有抽象方法的类必须是抽象类 2、非抽象类继承抽象类必须实现所有抽象方法 3、抽象类可以继承抽象类,可以不实现父类抽象方法 4、抽象类可以有方法实现和属性 5、抽象类不能被实例化 6、抽象类不能声明final 7、抽象类可以...

独孤自在的博客 227

COCO2017数据集类别分布深度解析

本文深入解析了COCO2017数据集的类别分布情况,包括80个常见物体的分类统计和样本数量分析。通过对比训练集与验证集的分布一致性,探讨了数据均衡性问题,并针对高频和低频类别提出了实用的数据预处理和模型训练建议,帮助优化计算机视觉任务的性能。

weixin_42533751的博客 369

无刷电机FOC硬件电路设计

本文先对MIT无刷电机FOC硬件电路分析做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章软件程序在我另外一个博客【嵌入式–伺服电机】MIT无刷电机FOC驱动程序分析。

qq_35635374的博客 574

面向对象的特征之一:抽象

面试题: 面向对象的基本特征:封装、继承、多态 面向对象的特征:封装、继承、多态、抽象 类:一类具有相同特性的事物的抽象描述。 抽象:不明确,不清楚,不确定 反义词:具体 1、什么情况下会用到抽象? 我们要声明(1)圆类(2)矩形类等类型,发现这些子类中有共同的特征,需要提取到公共父类Graphic中, 但是在公共父类中又无法给出具体的方法的实现,那么这样的方法我们...

# Never Give up & 1941

Spring AI Alibaba实战训练营-14基于A2A协议智能体应用开发指南

本文介绍了基于A2A协议的智能体应用开发流程,主要包括客户端和服务端两个模块的实现。关键技术包括A2A通信协议、Nacos服务发现、Spring AI Alibaba框架和DashScope通义千问API。开发步骤涵盖环境准备(JDK17、Maven、Nacos)、项目创建、依赖配置(重点引入spring-ai-alibaba相关组件)以及Nacos和DashScope的核心配置。整个系统架构采用客户端通过Nacos发现服务端Agent,再调用阿里云AI服务的模式,实现了AI能力的解耦与复用。

program哲学 504

【Java】面向对象之抽象类详解

抽象类使用abstract关键字进行声明。一个类只需要包含一个抽象方法,该类就必须被定义为抽象类。// 实例变量// 构造函数// 抽象方法(没有方法体)// 具体方法(有方法体)// getter 方法抽象类是Java中定义抽象行为和实现模板的重要工具。通过抽象类,可以为子类提供通用行为、定义算法框架以及实现模块化的设计。理解和使用抽象类对于构建灵活和可扩展的Java应用程序至关重要。抽象类使用abstract关键字声明,不能直接实例化。

u013675821的博客 2143

数字孪生通信层开发:C#实现OPC UA到Unity3D的实时数据映射(2026年工业级实战指南)

(西门子数字孪生总监):“在产线上,50ms的延迟意味着1%的设备误操作率。2026年,通信层不是‘工具’,是数字孪生的‘生命线’。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 182

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

java面向对象抽象类,接口,内部类详解

abstract是抽象的意思,用于修饰方法方法和类,修饰的方法是抽象方法,修饰的类是抽象类。我们已经学完了抽象类,抽象类中可以用抽象方法,也可以有普通方法,构造方法,成员变量等。那么什么是接口呢?接口是更加彻底的抽象,JDK7之前,包括JDK7,接口中全部是抽象方法。接口同样是不能创建对象的。//接口的定义格式: interface 接口名称 {// 抽象方法 } // 接口的声明:interface // 接口名称:首字母大写,满足“驼峰模式”类与接口的关系为实现关系,即类实现接口。

m0_58975186的博客 2084

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Java面向对象多态、抽象类、接口详解

目录一、方法重写1. 方法重写概述2. 方法重写的注意事项3. 举例二、多态1. 多态的概述2. 多态中的成员访问特点3. 多态的利弊4. 向上转型与向下转型5. 多态的内存图解 一、方法重写 1. 方法重写概述 什么是方法重写 方法重写是在继承中出现,当子类对父类所提供的方法不满意是可以对方法重写,又称为方法覆盖、方法复写。重写的方法与父类中的原方法的方法声明(方法名、参数列表、返回值)一样 ...

qq_44495081的博客 420

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Java 中的抽象类详解:面向对象编程的重要概念

抽象类是 Java 中实现代码复用和模板设计的重要工具,它通过提供抽象方法和非抽象方法,为子类定义了通用的行为和属性。理解抽象类的特性和使用场景,有助于更好地设计和组织面向对象的程序结构。通过本文的讲解,你应该对抽象类有了更深入的理解。在实际开发中,合理使用抽象类可以提高代码的复用性和可维护性,帮助你构建更加健壮和灵活的系统。

weixin_73537561的博客 876

Java面向对象核心:继承、接口与抽象类详解

继承、接口和抽象类是Java面向对象编程的三大核心概念。理解它们的区别和使用场景,对于设计良好的软件架构至关重要。本文将通过实际示例,深入解析这三个概念的特点、使用方法和最佳实践。

qq_43552242的博客 1210

Java 抽象类详解:从基础到实战,掌握面向对象设计的核心基石

《Java抽象类全面解析》摘要:本文系统讲解了Java抽象类的核心概念与应用。作为面向对象编程的重要工具,抽象类提供了代码复用和行为规范的平衡机制。文章比较了抽象类与接口的关键区别,详细介绍了语法规则、设计模式应用(如模板方法)以及实际业务场景案例。特别强调了抽象类"部分实现"的特性,即允许同时包含抽象方法和具体方法。针对开发者常见误区,文章给出了实用建议,并总结了抽象类在工具类封装、领域建模等场景中的最佳实践,帮助读者掌握这一提升代码可扩展性的关键技术。

weixin_73962764的博客 644

【Java 学习】Java抽象类详解:从理论到实践,带你迈向面向对象的深度思考!

在Java中,抽象类是一种无法直接实例化的特殊类,它的设计初衷是为了定义一种规范,让子类去实现具体的功能。本文从基本概念入手,解析抽象类的特性、语法规则及其在实际开发中的应用场景。抽象类的核心特点包括:不能直接实例化、可包含抽象方法和普通方法,以及必须由子类实现所有抽象方法。文章深入探讨了抽象类在面向对象编程中的作用,并通过Animal、Dog、Cat类的关系图及代码示例,形象展示了如何用抽象类实现多态和代码规范。最后,文章强调了抽象类的使用场景及其优势,尤其是在开发中通过编译器校验帮助开发者减少潜在错误。

Code哈哈笑的博客 6941

Java面向对象【详解三】—— 抽象类 + 接口+内部类

抽象类 + 接口+内部类

LYJbao的博客 588

Java面向对象三大特性:抽象类、接口与内部类详解

面向对象编程中的抽象类与接口是实现多态和代码复用的核心机制。抽象类通过abstract关键字定义部分实现的方法模板,适合具有共同行为但需要差异化实现的场景;接口则作为纯粹的行为契约,从Java8开始支持默认方法和静态方法,极大提升了灵活性。内部类提供了更精细的封装方式,包括成员内部类、静态内部类等形式,在事件处理和迭代器模式中表现突出。理解这些特性的设计原理和适用场景,能够帮助开发者更好地实现模块解耦、代码复用等工程目标,特别是在框架设计和业务系统开发中发挥关键作用。

weixin_31292729的博客 240

Java面向对象核心特性:static、final与抽象类详解

面向对象编程是现代软件开发的基础范式,Java通过static、final等关键字和抽象类机制提供了强大的面向对象支持。static关键字用于定义类级别的成员,其加载机制与JVM类加载过程密切相关,常用于工具类、单例模式等场景。final关键字则通过限制修改来确保代码的稳定性和线程安全性,特别适合定义常量和实现不可变对象。抽象类作为面向对象的重要特性,通过模板方法模式实现了代码复用与扩展性的平衡。理解这些核心特性不仅有助于编写健壮的Java代码,也是掌握设计模式和架构思想的基础。本文结合工程实践,深入解析这

weixin_32430941的博客 234

Java面向对象核心:继承与抽象类详解(附完整案例)

继承描述的是事物之间的所属关系,通过继承可以形成清晰的体系结构。就像现实中子女继承父辈财产一样,在Java中,子类会自动拥有父类所有可继承的属性和方法。员工体系示例复制员工 (Employee)├── 研发部员工 (Developer)│ ├── JavaEE工程师│ └── Android工程师└── 维护部员工 (Maintainer)├── 网络维护工程师└── 硬件维护工程师当子类出现与父类一模一样的方法时(方法名、参数列表、返回类型都相同),会发生覆盖操作,也称为重写。基本示例。

weixin_43954652的博客 1184

java面向对象—接口、抽象方法,抽象类,重写,上下转型的作用概述过程详解版

抽象方法,抽象类,接口,重写 **抽象类的产生:**为迎合一些场景,当所有的子类对父类的某个方法都必须要进行不同程度的重写,那么这个方法的方法体没有实际含义就可以把方法体去掉加上abstract关键字修饰方法,让子类进行不同程度的实现 abstract功能:-–>关键字,修饰方法,修饰类 **为什么抽象方法一定要重写:**因为在继承关系中,子类可以使用父类的部分信息,如果抽象方法不被重写的话,其本身是没有方法体的,所以一旦子类调用的话一定是进行报错的 **重点:**一个类中如果出现抽象方法,不管多少,

虚空掠夺者~ 231
上一篇: 【Java面向对象】类的继承详解
下一篇: 【Java面向对象】Java接口详解
ALGO阿狗
博客等级 码龄9年 64粉丝 149原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值