【Java面向对象】java学习之旅16-抽象类

面向对象 面试题16道(附答案) 面向对象 面试题16道(附答案)1. 接口与抽象类的区别?2. 构造方法可否能被重写?3. (= =)与equals()的区别?4. 什么是拆箱和装箱?5. 方法重载(overload)需要满足什么条件,方法覆盖/方法重写(override)需要满足什么条件?6. 谈谈final,finally,finalize的区别。7. abstract的method是否可同时是static,是否可同时是synchronized?8. 接口是否可继承接口?抽象类是否可实现(implements)接口?实现类是否可继承抽 阅读详情

定义:

抽象的类,对于一系列具有共同特征和行为的子类的进一步抽象。

使用:

  1. 使用abstract修饰类名
  2. 抽象类中可以有属性、普通方法和抽象方法
  3. 抽象方法:只有声明没有实现,使用abstract关键字修饰
  4. 子类继承抽象父类,通过重写实现父类的所有抽象方法,否则该子类也是抽象类

注意事项:

  1. 抽象类不可以直接创建对象,可以通过类的内部实现创建对象。
  2. 抽象类可以有抽象方法,也可以有普通方法。
  3. 有抽象方法的类一定是抽象类。
  4. 子类没有重写实现所有抽象父类的抽象方法,子类也必须是抽象类。
  5. 构造方法和静态方法不能是抽象的。
  6. 抽象类不能被final修饰
  7. 抽象方法不能被final、private修饰
  8. 抽象类的构造方法不能直接使用,可以在子类的构造方法中调用

下面用枪械类来说明抽象类

/**
 * 	枪械抽象类
 * 
 */
public abstract class Gun {
	
	private String name;
	private double range;
	private double caliber;
	
	public Gun() {
		super();
	}
	public Gun(String name, double range, double caliber) {
		super();
		this.name = name;
		this.range = range;
		this.caliber = caliber;
	}

	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public double getRange() {
		return range;
	}
	public void setRange(double range) {
		this.range = range;
	}
	public double getCaliber() {
		return caliber;
	}
	public void setCaliber(double caliber) {
		this.caliber = caliber;
	}
	
	//抽象方法
	public abstract void shoot();
	
	@Override
	public String toString() {
		return "Gun [name=" + name + ", range=" + range + ", caliber=" + caliber + "]";
	}
	
}

建立一个突击步枪子类

/**
 * 	步枪子类
 */
public class Musket extends Gun {

	public Musket() {
		super();
	}

	public Musket(String name, double range, double caliber) {
		super(name, range, caliber);
	}

	@Override
	//如果本类不是抽象类,必须重写抽象父类的抽象方法
	public void shoot() {
		System.out.println("突突突");
	}

}

在主方法中

public static void main(String[] args) {
		
		//抽象类的内部实现
		//可以理解为java不允许抽象类创建对象,但是如果实现了抽象的方法可以允许创建实例对象
		Gun gun1 = new Gun("黄金左轮", 100.5, 5.8) {
			@Override
			public void shoot() {
				System.out.println("点射");
			}
		};
		System.out.println(gun1.toString());
		gun1.shoot();
		
		//通过子类实现抽象父类,创建对象
		Musket gun2 = new Musket("ak47", 400, 7.62);
		System.out.println(gun2.toString());
		gun2.shoot();
		
	}

总结:

用abstract去定义一个抽象类,定义抽象方法是必须要加abstract,没有默认一说也是防止创建父类对象所以用抽象去定义

拆开一个烧坏的IGBT模块,手把手教你识别过压、过流、过温的“案发现场” 本文详细解析了IGBT模块失效分析的实战技巧,通过观察铝层熔化纹路、焊锡溢出形态等物理痕迹,手把手教你识别过压、过流、过温的典型失效模式。文章提供了从基础工具包到现场快速诊断的完整流程,帮助工程师精准定位IGBT模块失效的根本原因。 阅读详情

相关推荐

Delphi中使用FireDAC与uniDAC高效连接PostgreSQL的实战指南

本文为Delphi开发者提供了使用FireDAC与uniDAC组件高效连接PostgreSQL数据库的实战指南。文章详细对比了两款组件的选择策略,重点解析了驱动依赖(libpq.dll)的配置、连接参数设置、常见错误排查及性能优化技巧,旨在帮助开发者快速构建稳定可靠的数据库连接。

tomato的博客 805

JAVA学习线路:day01面向对象(继承、抽象类)

day01面向对象【继承、抽象类】 今日学习内容-2020.9.16 继承 方法重写 this/super关键字 抽象类 类与对象 1、什么是类 类是现实事物的抽象,将现实事物描述成对应的类,其行为封装为方法,属性封装为成员变量。 2、什么是对象 对象是从类中得到的具体实例!在定义Person类并没有一个具体的人出现,而创建对象后,就会出现一个具体的人 继承 1、说出继承的概念 当要定义一个类(讲师)时,发现已有类(员工)和要定义的类相似,并且要定义的类属于已有类的一种时,可以将要定义类定义为已有类的子

CodeBull_K的博客 803

从零到一:用AXI DataMover在Zynq MPSoC上实现高效DMA传输(附Vitis HLS驱动示例)

本文详细介绍了如何在Xilinx Zynq UltraScale+ MPSoC平台上使用AXI DataMover实现高效的DMA数据传输。通过解析AXI DataMover架构、Vivado工程配置、Vitis HLS驱动开发及性能优化技巧,帮助开发者快速构建高性能数据传输通道,并提供了可直接复用的代码示例。

weixin_42520796的博客 424

Java超全的面向对象复习笔记

文章目录Java 面向对象学习1. 类与对象1.1 面向对象简介1.2 类与对象简介1.3 类与对象的使用*1.4 对象内存分析*1.5 对象引用分析1.6 引用与垃圾产生分析2 深入分析类与对象2.1 成员属性封装2.2 构造方法和匿名对象3 this关键字3.1 this调用本类属性3.2 this调用本类方法3.3 简单Java类4 static关键字4.1 声明static属性4.2 声明static方法5 代码块5.1 普通代码块5.2 构造代码块5.3 静态代码块6 面向对象案例分析7 数组7.

HelloWorld 1508

SillyTavern角色卡制作全攻略:如何用AI还原你喜欢的虚构角色(附三叶完整角色卡JSON)

本文详细介绍了如何使用SillyTavern制作高质量AI角色卡,以《你的名字》中的宫水三叶为例,从角色特征提取、对话风格捕捉到JSON结构优化,全面解析AI角色扮演的创作技巧。通过具体的写作示例和完整角色卡JSON,帮助二次元爱好者和同人创作者实现虚构角色的精准还原与生动互动。

pandas7gardener的博客 2122

S32DS IDE调试技巧:如何用条件断点精准捕获汽车电子MCU的硬件状态变化

本文详细介绍了S32DS IDE中条件断点功能在汽车电子MCU开发中的应用技巧。通过精准捕获硬件状态变化,工程师可以高效调试外设寄存器异常、时序敏感型交互等复杂场景,大幅提升汽车电子系统的开发效率。文章还提供了多种实战案例和性能优化建议,帮助开发者充分利用S32DS的调试功能。

CAT789的专栏 207

Java基础16--面向对象:抽象类

本篇文章介绍了Java基础的面向对象部分的抽象类相关知识点,非常详细,适合新手小白!

bobby102的博客 242

【NI Multisim 14.0原理图设计基础——元器件分类】

电阻(RESISTOR):该元器件栏中的电阻都是标称电阻,是根据真实电阻元器件而设计的,其电阻值不能改变。 排阻(RESISTOR PACK):相当于多个电阻并列封装在一个壳内,它们具有相同的阻值。 电位器(POTENTIOMETER):即可调电阻,可以通过键盘字母动态调节电阻,大写表示增加电阻值,小写表示减小电阻值,调节增量可以设置。 电容(CAPACITOR):所有电容都是无极性的,不能改变参数,没有考虑误差,也未考虑耐压大小。 电解电容器(CAP_ELECTROLIT):所有电容都是有极性的,“+”极

RL2698853114的博客 4万+

Java学习16-- 面向对象学习4&5. 面向对象三大特征&抽象类和接口

提高代码的安全性隐藏代码的实现细节统一接口增加系统的可维护性。

weixin_42892630的博客 911

基于POD和神经网络的多工况温度场重构反演系统

本文提出了一种基于本征正交分解(POD)和神经网络的多工况温度场重构反演系统。该系统通过POD方法从多工况温度场数据中提取主要特征模态,构建神经网络模型建立工况参数与POD模态系数的映射关系,实现温度场的快速重构。系统采用Python实现,包含数据预处理、POD分解、神经网络训练和温度场重构等模块。实验结果表明,该方法能够有效降低计算复杂度,实现高精度的温度场预测。

huanghm88的专栏 274

基于Playwright和反爬虫规避技术的雪球股票讨论数据采集方案

随着量化投资和社交投资的兴起,雪球作为中国领先的投资社交平台,其用户讨论数据成为研究市场情绪的重要来源。本文将详细介绍如何使用最新的Playwright技术和反爬虫规避策略,构建一个高效、稳定的雪球股票讨论爬虫系统。本文详细介绍了基于Playwright的雪球股票讨论爬虫实现方案,涵盖了从基础配置到高级反爬虫策略的各个方面。AI驱动的反爬虫对抗更智能的请求调度算法区块链技术在数据溯源中的应用联邦学习在数据采集中的运用。

2201_76125261的博客 1004

JavaSE 进阶 - 第16章 面向对象(final、抽象类、接口)

JavaSE 进阶 - 第16章 面向对象(final、抽象类、接口)1、final关键字——最终的,不可改变的2、抽象类3、接口的基础语法。4、接口在开发中的作用5、类型和类型之间的关系6、抽象类和接口的区别传送门 1、final关键字——最终的,不可改变的 1.1、final 修饰的类不能被继承 1.2、final 修饰的方法不能被覆盖 1.3、final 修饰的变量只能赋一次值。 1.4、final修饰的引用一旦指向某个对象,则不能再重新指向(new)其它对象, 但该引用指向的对象内部的数

佬涛的博客 540

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

C++基础#16:Java抽象类和C++虚基类的异同

java和C++都是面向对象编程语言,遵循面向对象的特性,继承,封装,多态。 由于java的抽象类和C++虚基类很像,本篇对二者在这两个概念上进行一些比较。

记录和分享程序人生的点点滴滴 3238

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Java 面向对象进阶:抽象类、接口与 Comparable 接口

本文介绍了Java面向对象编程中抽象类、接口和Comparable接口的核心概念和应用。抽象类作为"设计模板",通过abstract关键字定义,不能实例化但支持多态,子类必须重写其抽象方法。接口是"行为规范",用interface声明,支持多继承和多实现,实现类需重写所有抽象方法。Comparable接口定义了对象排序规则,通过compareTo()方法实现自动排序。三者各有特点:抽象类侧重提取共性代码,接口定义行为契约,Comparable处理对象排序。合理使用这些

2503_93734861的博客 935

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

java 面向对象项目_面向对象抽象类的实际项目的应用(Java篇)

简介上二篇主要讲了面向对象理论中抽象类的具体应用。但是举的例子很简单。所以这一篇想模拟一个实际的项目来具体说明一下抽象类的具体应用。采用的语言是Java必定会这种语言的童鞋很多。项目需求:模拟开发一个播放视频的万能播放器的功能。可以播放AVI、MPEG、RMVB 对这三种格式的视频播放。例如:001.avi 自动选择播放AVI格式的功能 001.mpeg自动选择播放MPEG格式的功能 001....

weixin_32254267的博客 589

Java面向对象编程

访问修饰符 返回数据类型 方法名(形参列表..){//方法体语句;return 返回值;// 如果方法是void,则方法体中可以没有return 语句,或者只写return;访问修饰符(作用是控制方法使用的范围)如果不写默认访问,[有四种: public, protected, 默认, private]方法不能嵌套定义!java 中允许同一个类中,多个同名方法的存在,但要求形参列表不一致!构造方法又叫构造器(constructor),是类的一种特殊的方法,它的主要作用是完成对新对象的初始化。

2303_82176667的博客 1591

《疯狂java讲义》学习(16):抽象类

抽象类 当编写一个类时,常常会为该类定义一些方法,这些方法用以描述该类的行为方式,那么这些方法都有具体的方法体。但在某些情况下,某个父类只是知道其子类应该包含怎样的方法,但无法准确地知道这些子类如何实现这些方法。例如定义了一个Shape类,这个类应该提供一个计算周长的方法callPerimeter(),但不同Shape子类对周长的计算方法是不一样的,即Shape类无法准确地知道其子类计算周长的方法...

泛泛之素 1013

Java面向对象之抽象类

内容: 1、抽象类的产生 2、抽象类和抽象方法的定义与使用 3、抽象类和抽象方法的注意事项 4、实例分析 1、抽象类的产生 当编写一个类时,我们往往会为该类定义一些方法,这些方法是用来描述该类的功能具体实现方式,那么这些方法都有具体的方法体 但是有的时候,某个父类只是知道子类应该包含怎么样的方法,但是无法准确知道子类如何实现这些方法。 比如一个图形类应该有一个求周...

weixin_33966095的博客 130

一步一步学python之(16)面向对象(抽象类和接口)

本文介绍了Python中的抽象类和接口概念及其实现方式。抽象类通过abc模块创建,必须包含至少一个抽象方法(@abstractmethod),不能实例化,要求子类必须实现所有抽象方法。接口在Python中表现为仅含抽象方法的特殊抽象类。文章通过动物叫声示例展示了抽象类的使用方法,并通过表格对比了抽象类与普通类的区别。最后指出Python官方文档提供了更详细的抽象基类说明。这两种机制都用于规范子类行为,其中抽象类允许包含具体方法,而接口只定义纯抽象方法。

987

Day16 面向对象进阶——接Day15

本节主要讲解面向对象的进阶,帮助深刻理解Java的抽象类和抽象方法、接口、多态、对象转型和内部类,并附带内部类的内存理解图。

yjp1240201821的博客 1423

JavaSE16——抽象类(Abstract Class)

使用abstract关键字修饰方法,该方法就成了抽象方法,抽象方法只包含一个方法名,而没有方法体。修饰符 abstract 返回值类型 方法名 (参数列表);抽象类用关键字"abstract"进行声明:在Java中,通过使用关键字"abstract"来声明一个抽象类。抽象类不能被直接实例化,只能作为父类被继承。抽象方法和非抽象方法:抽象类可以包含抽象方法和非抽象方法。抽象方法:没有具体实现的方法,只有方法声明,没有方法体。抽象方法必须使用关键字"abstract"进行声明。

tonyshi1989的博客 1238

16-面向对象之-继承-抽象类

面向对象 继承 抽象类 继承 继承的概念 在现实生活中,继承一般指的是子女继承父辈的财产。在程序中,继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成一种关系体系。例如公司中的研发部员工和维护部员工都属于员工,程序中便可以描述为研发部员工和维护部员工继承自员工,同理,JavaEE工程师和Android工程师继承自研发部员工,而维网络维护工程师和硬件维护工程师继承自维护部...

Qbaiwan的博客 242

JavaSE(面向对象、继承、抽象类)

JavaSE阶段面向对象复习类和对象定义一个标准类创建并使用对象对象的内存图匿名对象匿名对象的概述使用匿名对象继承继承概述为什么要有继承继承的含义继承的好处继承的格式格式示例继承后成员访问规则继承后构造放法的访问规则继承后私有成员的访问规则继承后非私有成员的访问规则方法重写方法重写的概念重写的注意事项this和super关键字this和super关键字的介绍this关键字的三种用法super关键字的三种用法super的注意事项super的注意事项一super的注意事项二继承体系对象的内存图继承的特点抽象类抽

weixin_50648720的博客 1098

[ Java学习基础 ] Java的抽象类与接口

一、抽象类 1. 抽象类   Java语言提供了两种类:一种是具体类;另一种是抽象子类。 2. 抽象类概念:   在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一...

asrglx8740的博客 284

python面向对象:抽象类

与java一样,python也有抽象类的概念,但是同样需要借助模块实现,抽象类是一个特殊的类,它的特殊之处在于只能被继承,不能被实例化。

liudefang的专栏 932

java面向对象--抽象类

抽象的表述: ​ 我们之前所说的猫,狗,猪,羊驼,熊猫等等都是动物的具体的例子,而动物本身是一个抽象的概念,而我们之前是将动物写成了一个类,而类又可以创建对象,但是呢,实际上抽象的东西本身应该不能实例化,并且动物这个概念中吃的方法,以及动物共有的方法本身也是一个不具体的方法, ​ 我们在今天之后,把一个不具体的功能,叫做抽象方法,而如果说一个类中包含有抽象方法的时候, ​ 这个类叫做抽象类。 抽象类的特点: ​ 1、抽象

weixin_51044393的博客 146
上一篇: 【Java面向对象】java学习之旅15-多态
下一篇: 【Java面向对象】java学习之旅17-接口
JeffHan^_^
博客等级 码龄7年 1万+粉丝 134原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JeffHan^_^

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值