Java - 提高(1) - 抽象类与接口

hcaptcha-challenger:基于本地AI模型自动破解验证码的工程实践 验证码作为区分人类与机器的经典安全机制,其核心原理是通过图像识别、行为分析等交互式挑战来阻挡自动化程序。传统绕过方法依赖第三方打码平台或脚本,存在成本高、稳定性差的问题。随着多模态大语言模型和计算机视觉技术的发展,本地化AI求解成为新的技术方向,它通过集成YOLO、ResNet等模型,在本地完成图像语义理解,实现了高隐私、低成本、可进化的验证码自动化解决方案。这种范式尤其适用于需要大规模稳定处理网页交互的场景,如电商数据采集和社交媒体管理。hcaptcha-challenger项目正是这一理念的工程实践,它 阅读详情

Java基础系列学习笔记

参考资料来源 :

http://www.cnblogs.com/chenssy/

<Java编程思想> , 以及其他网络上的学习资料

如有错误 , 烦请指正 , 欢迎讨论


抽象类

在面向对象的领域中一切都是对象,同样所有的对象都是通过类来描述的,但并不是所有的类都来描述对象的.
如果一个类没有足够的信息来描述一个具体对象,而需要其他具体的类来支撑它,那这样的类,我们称之为抽象类.


在面向对象领域由于抽象的概念在问题领域没有对应的具体概念,所以抽象概念的抽象类是不能实例化的.
同时,抽象类体现了数据抽象的思想,是实现多态的一种机制.
它定义了一组抽象的方法,至于这组抽象方法的具体表现形式由派生类来实现.
同时抽象类提供了继承的概念,它的出发点就是为了继承,否则它没有存在的任何意义.

所以说,定义的抽象类一定是用来继承的.


包含了抽象方法的类叫作"抽象类".如果一个类里包含了一个或多个抽象方法,类就必须指定成抽象类.

即使不包括任何 abstract 方法,亦可将一个类声明成“抽象类”。
如果一个类没必要拥有任何抽象方法,而且我们想禁止那个类的所有实例,这种能力就会显得非常有用。

如果从一个抽象类继承,而且想生成新类型的一个对象,就必须为基础类中的所有抽象方法提供方法定义。


使用抽象类时需要注意以下几点:
1. 抽象类不能被实例化,实例化的工作应该由它的子类来完成,他只需要有一个引用即可.
2. 抽象方法必须由子类来进行重写
3. 只要包含一个抽象方法,该类必定要定义成抽象类
4. 抽象类中可以包含具体的方法,也可以不包含
5. 子类中的抽象方法不能与父类的抽象方法同名
6. abstract不能与final并列使用
7. abstract 不能与private、static、final或native并列修饰同一个方法


我们来举个栗子:

	//抽象父类 
	public abstract class Animal {
	        public abstract void cry();
	}
	
	//子类
	public class Cat extends Animal {
	        @Override
	        public void cry() {
	                System.out.println("猫...");
	        }
	}
	//子类
	public class Dog extends Animal {
	        @Override
	        public void cry() {
	                System.out.println("狗...");
	        }
	}
	
	public static void main(String[] args) {
	        Animal cat = new Cat();
	        Animal dog = new Dog();
	        cat.cry();
	        dog.cry();
	}
	
	输出:
	        猫...
	        狗...
	
创建抽象类和抽象方法非常有用,因为它们可以使类的抽象性明确起来,并告诉用户和编译器打算怎么使用它们.

抽象类还是有用的重构器,因为它可以使我们很容易的将公共方法沿着集成层次结构向上移动.


接口

"interface"接口关键字 使抽象的概念更深入了一层。我们可以将其想象为一个"纯抽象类",不过要明确的一点是:接口本身不是类。

它允许创建者规定一个类的基本形式:方法名,自变量列表以及返回类型,但不规定方法主体。

接口只是一种形式,并不提供实现的细节。

接口是用来建立类与类之间协议,所提供的一种形式,而没有具体的实现。
同时实现该接口的实现类必须实现该接口的所有方法。

接口是抽象类的衍生,java了保证数据安全是不能多重继承的,也就是说继承只能存在一个父类,但是接口不同,
一个类可以同时实现多个接口,不管这些接口之间有没有关系,所以接口弥补了抽象类不能多重继承的缺陷,
但是推荐继承和接口共同使用,因为这样既可以保证数据安全性又可以实现多重继承。


在使用接口的过程中需要注意如下几个问题:
1. Interface接口的所有方法访问权限会自动声明为public。
2. 接口中可以定义"成员变量" 或者说是 "不可变的变量",因为接口中的"成员变量"会自动变为"public static final",可以通过类名直接访问。
3. 接口中不存在实现的方法
4. 实现接口的非抽象类必须要实现该接口的所有方法。抽象类可以不用实现。
5. 不能使用new操作符实例化一个接口
6. 在实现多接口的时候一定要避免方法名的重复



抽象类与接口的区别

(这个我觉得原博主总结的非常好呀)

1. 语法层次
抽象类方式中,抽象类可以拥有任意范围的成员数据,同时也可以拥有自己的非抽象方法。
但是接口方式中,它仅能有静态变量,不能修改成员数据(我们一般不在接口中使用成员变量),从某种程度上讲,接口是抽象类的特殊化。

抽象类中的抽象方法 访问类型可以使用 public,protected
接口中的方法只能是 public


2. 设计层次
i. 抽象层次不同
抽象类是对类抽象,而接口是对行为抽象。
抽象类是对整个类 整体进行抽象,包括属性,行为,但是接口却是对类的局部(行为)进行抽象。

ii. 跨域不同
抽象类所跨域的是具有相似特点的类,而接口却可以跨域不同的类。
抽象类是从子类中发现公共部分,然后泛化成抽象类,子类继承该父类即可,但是接口不同,实现它的子类可以不存在任何关系。

例如猫、狗可以抽象成一个动物类抽象类,具备叫的方法。
鸟、飞机可以实现飞Fly接口,具备飞的行为,这里我们总不能将鸟、飞机共用一个父类吧!

所以说抽象类所体现的是一种继承关系,要想使得继承关系合理,父类和派生类之间必须存在"is-a" 关系,即父类和派生类在概念本质上应该是相同的。
对于接口则不然,并不要求接口的实现者和接口定义在概念本质上是一致的, 仅仅是实现了接口定义的契约而已。

iii. 设计层次不同
对于抽象类而言,它是自下而上来设计的,我们要先知道子类才能抽象出父类,而接口则不同,
它根本就不需要知道子类的存在,只需要定义一个规则即可,至于什么子类、什么时候怎么实现它一概不知。

比如我们只有一个猫类在这里,如果你这是就抽象成一个动物类,是不是设计有点儿过度?
我们起码要有两个动物类,猫、狗在这里,我们在抽象他们的共同点形成动物抽象类吧!
所以说抽象类往往都是通过重构而来的!

但是接口就不同,比如说飞,我们根本就不知道会有什么东西来实现这个飞接口,怎么实现也不得而知,
我们要做的就是事前定义好飞的行为接口。
所以说抽象类是自底向上抽象而来的,接口是自顶向下设计出来的。


别再死磕NFP了!用Python+遗传算法搞定异形件自动排版(附完整代码) 本文介绍了如何利用Python和遗传算法实现异形件智能排版,解决传统NFP方法计算复杂的问题。通过Shapely库处理几何运算和DEAP库搭建遗传算法框架,结合模拟退火策略避免局部最优,显著提升材料利用率。附完整代码和优化技巧,适用于服装裁剪、金属加工等行业。 阅读详情

相关推荐

蓝牙耳机充电仓——功能框架

数据传输:大部分充电仓会跟耳机通信,控制耳机开机、关机和进入可搜索模式等等。蓝牙耳机给大家的生活带来便利,来讲讲TWS蓝牙耳机的搭档充电仓吧!方便携带:如果耳机单独带着,指定能弄丢一个,有了充电仓就安全多了。收纳保护:把珍爱的耳机放入充电仓里,防止丢失、磕碰、刮花等。给耳机充电:提供电力补给,让耳机持续使用。

改变自己现在能改变的,珍惜自己现在所拥有的 8949

Java面试题--基础知识部分

一些Java基础,收集了一些基本的Java面试基础知识,总结如下: 1、面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用 部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。 2.继承: 继承是一种联结类的层次模型,并且允许和鼓励类的重用,...

weixin_30802273的博客 1万+

408——计算机组成原理(持续更新)

小数点前的0代表正数,1代表负数。

qq_55202378的博客 1722

Java学习笔记之接口和抽象类

前言 最近遇到了接口和抽象类的使用,搞不明白二者的区别,所以特地研究了下而这,笔记如下。 接口和抽象类的定义 抽象类:包含抽象方法的一个类叫做“抽象类”。 接口:可将其想象成为一个“纯”抽象类,它只声明类方法,不提供方法的实现细节。 接口和抽象类的特点 抽象类: 1.如果一个类A继承了抽象类B,并且没有实现抽线类B中的抽象方法,

LYH66的专栏 955

数电实训:万年历

万年历

Lmyccq的博客 1万+

数学建模之0—1规划(Python)

目录 1、概述 (1)知识框架 (2)线性整数规划模型 (3)分支定界法 2、案例 (1)案例1​ (2)案例2 3、遗传算法—sko-GA包实现 (1)代码 (2)结果 4、PuLp实现 (1)代码 (2)结果 5、致谢 1、概述 (1)知识框架 (2)线性整数规划模型 (3)分支定界法 2、案例 (1)案例1 (2)案例2 3、遗传算法—sko-GA包...

weixin_46039719的博客 4112

java 抽象方法必须被重写么_java中,一个类实现某个接口,必须重写接口中的所有方法吗...

不一定,关键要看子类是否是抽象类。如果子类是非抽象类,则必须实现接口中的所有方法;如果子类是抽象类,则可以不实现接口中的所有方法,因为抽象类中允许有抽象方法的存在!1、抽象类定义抽象类往往用来表征对问题领域进行分析、设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象。通常在编程语句中用 abstract 修饰的类是抽象类。在C++中,含有纯虚拟函数的类称为抽象类,它不能生成...

weixin_36320395的博客 3819

触摸芯片RM1015B基本使用方法

RM1015B触摸芯片使用指南:该芯片采用4通道设计(实际使用3通道),通过I2C接口通信(设备地址0x2B)。硬件设计需注意中断/复位引脚复用,需上拉处理。软件配置包括初始化、中断处理和定时器扫描,通过设置各通道阈值(0-300W)调节灵敏度,值越小越灵敏。调试时可调用rm1015B_debug_func()输出波形数据。典型应用场景包括接近检测和手势识别,中断触发后需在8ms内响应。特别注意不同通道的寄存器映射关系及校准流程,确保检测准确性。

云淡风轻 178

java提高篇(1)-----抽象类与接口

转自http://blog.youkuaiyun.com/chenssy/article/details/12858267 接口和内部类为我们提供了一种将接口与实现分离的更加结构化的方法。        抽象类与接口是Java语言中对抽象概念进行定义的两种机制,正是由于他们的存在才赋予java强大的面向对象的能力。他们两者之间对抽象概念的支持有很大的相似,甚至可以互换,但是也有区别

ddd_1206的博客 282

opencode : 无法将“opencode“项识别为 cmdlet、函数、脚本文件或可运行程序的名称 解决方案

opencode命令识别问题与openclawcodexgemini确保的路径在 PATH 中。这个知识对所有 npm 全局工具通用。

一键难忘的博客 4521

JSON 与 JSON-RPC 的区别

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,基于文本,采用人类可读的语法来表示结构化数据。它起源于JavaScript,但如今已被几乎所有主流编程语言支持。标准文档:RFC 4627数据类型:支持 String、Number、Boolean、Null、Object、Array 六种基本类型格式示例"name": "张三","age": 30,JSON-RPC(JSON Remote Procedure Call)是一种远程过程调用(RPC)协议。

h a 6 6 6 c k 为 你解决复杂难题! 146

深入浅出:Java 抽象类与接口

接口是一种特殊的抽象类,它用于定义类应该遵循的行为(方法签名)。接口只包含常量和抽象方法的声明,不包含任何实现。一个类实现接口后,必须提供接口中所有方法的具体实现。接口常用于定义一些公共行为,不关心具体的实现方式。它们在编程中具有重要的地位,能够有效提高代码的灵活性和可维护性。它被用来作为其他类的基类,以提供一些通用的功能和属性,子类可以继承并实现其中的抽象方法。默认方法允许接口在不影响实现类的情况下为接口添加方法实现。接口中的静态方法可以像普通类的静态方法一样被调用,而不需要实现类来实现它。

2302_79376097的博客 6208

ROS从入门到精通0-1:教程导读

ROS概念太多太复杂?ROS从入门到精通系列订阅必看

FRIGIDWINTER的博客 1万+

【java】抽象类和接口

作者还是一个萌新,如果有什么讲的不对的地方欢迎在评论区指出,希望能够和你们一起进步✊。

acm_pn的博客 1350

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Java中抽象类与接口详解

private我们已经知道,抽象类就是为了被继承,但是private修饰的并不支持继承,自然抽象类中也不能有private修饰了finalfinal修饰的类不支持继承,所以也不能与抽象类中abstract在一起使用static抽象方法不能用static修饰,static修饰的方法是类级别的方法,不是对象级别的方法.而抽象类使用来被继承的.首先抽象类是半抽象的,接口是完全抽象的,这也决定了他们的不同1.一个类可以实现(implements)多个接口,但是一个普通类只能继承(extends)一个抽象类。

qm_hu的博客 1497

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Java中抽象类与接口的详细说明

首先简单的介绍一下抽象类: 定义是很简单的,我们这里不写官方的语言,我自己看着都烦,我们就用白话介绍,抽象类本质是一个类,没...

5394

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

java基础 接口 JDK1.8之前和之后的差别 面向接口编程 抽象类与接口的异同

Java笔记之接口接口定义语法 接口 定义 指系统对外提供的所有服务(interface定义的实实在在的接口,即接口类型)【只能有抽象方法】 语法

weixin_45279447的博客 2143

Java【抽象类和接口】是什么?

记录学习过程——Java【抽象类和接口】

yzhcjl_的博客 2175

JAVA-抽象类和接口

在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果 一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类

weixin_73869209的博客 727

【JAVA |抽象类和接口】JAVA中的抽象类和接口 纯干货!!!

接口提供了一种抽象的方法定义和类型规范,可以帮助我们实现代码的灵活性、可扩展性和可维护性,接口可以看作是一种合约或协议,规定了类应该实现哪些方法。

YKX0000的博客 1534

java抽象类和接口

在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来并不是所有的类都是用来描绘对象的,,这样的类就是抽象类。例如:一只小鸟和一只小狗,在Animal这个类中可以写出它们共同之处,但不能完整描绘出任意一个动物的具体方法比如鸟会飞但小狗不会,所以我们可以把animal定义为抽象类。

huohaiyu的博客 641

Java中接口与抽象类的区别,你知道吗?

接口与抽象类的区别

2402_82473645的博客 898

java定义两个动物抽象类 程序_Java 提高篇之抽象类与接口

接口和内部类为我们提供了一种将接口与实现分离的更加结构化的方法抽象类与接口是java语言中对抽象概念进行定义的两种机制,正是由于他们的存在才赋予java强大的面向对象的能力。他们两者之间对抽象概念的支持有很大的相似,甚至可以互换,但是也有区别。一、抽象类我们都知道在面向对象的领域一切都是对象,同时所有的对象都是通过类来描述的,但是并不是所有的类都是来描述对象的。如果一个类没有足够的信息来描述一个具...

weixin_39892460的博客 1380

Java抽象类与接口

Java抽象类与接口

admin3335的博客 655

Java提高——接口与抽象类

(不知这样理解是否有错!接口是抽象类的延伸,java了保证数据安全是不能多重继承的,也就是说继承只能存在一个父类,但是接口不同,一个类可以同时实现多个接口,不管这些接口之间有没有关系,所以接口弥补了抽象类不能多重继承的缺陷,但是推荐继承和接口共同使用,因为这样既可以保证数据安全性又可以实现多重继承。抽象类方式中,抽象类可以拥有任意范围的成员数据,同时也可以拥有自己的非抽象方法,但是接口方式中,它仅能够有静态、不能修改的成员数据(但是我们一般是不会在接口中使用成员数据),同时它所有的方法都必须是抽象的。

m0_64363449的博客 107

java抽象类与接口

一、抽象类 1、抽象类的格式 2、抽象类与普通类的区别 3、抽象方法与普通方法的区别 4、抽象类与抽象方法的使用 二、接口 1、接口的定义和使用 2、接口特性 3、面向接口编程 4、面向接口编程的优点 5、抽象类和接口的联系和区别 6、接口和类之间的关系: 7、接口与接口的关系: 三、接口补充 1、JDK7以前只能定义抽象方法 2、JDK8以后接口新增的方法 3、JDK9新增的方法...

qi341500的博客 775
上一篇: JVM_0.5_小故事
下一篇: Java - 提高-源码(10) - HashMap
Simba_cheng
博客等级 码龄11年 250粉丝 203原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值