接口(interface)、Object类、java中的包装类型

本文详细介绍了Java中的接口与抽象类的区别和作用,强调接口在多继承场景下的优势。讲解了接口的定义、成员变量和方法的特性,以及如何实现接口。同时,提到了JDK8中接口的默认方法,增加了接口的灵活性。此外,还涵盖了Object类的基本概念和方法,以及Java中的包装类型和自动装箱拆箱。最后,枚举的引入提高了代码的可读性和安全性,尤其是在switch语句中的使用。

接口(interface)

接口跟抽象类特别像

用来拓展定义类的功能,可以弥补java中单继承的缺点

类是单继承,只能继承一个类,只能有一个爹,接口可以弥补

硬件类接口(用户界面)

软件类接口(是由程序员设计出来的)

在java接口中,只有抽象方法没有方法实现。

因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为。

定义接口的格式

【修饰符】interface接口名{}

接口中的成员修饰符是固定的:

  • public static final 修饰的变量为常量,该值不能改变,只能读。

  • 修饰符:可选,用于指定的接口的访问权限,可选值为public。即使省略,默认是public

  • 接口名:接口名必须是符合java标识符,一般情况下,要求首字母大写。

  • 方法:接口中的方法只有定义没有被实现。

声明成员变量,即使没有修饰符,也会默认为public static final。

声明成员方法,即使没有修饰符,也会默认为public abstract。

类和接口的关系

  • 类和接口是实现关系,类实现接口。

  • 【访问权限修饰符】class 类名 【extends 父类名】【implements 接口列表】

  • 实现接口的实现类,必须重写接口中所有抽象方法后,子类才可以被实例化,否则报错。

  • 一个类可以实现多个接口,多个接口用逗号分隔,也可以不实现接口。

  • java不支持多继承,类可以实现多个接口。

  • 一个类在继承另一个类同时,还可以实现多个接口。

  • 接口的出现避免了单继承的局限性。

接口跟接口的关系

接口与接口之间是继承关系,而且可以多继承。

接口不能继承类。

接口与抽象类的区别

在java中接口是一个比抽象类更加抽象的概念,由于之声明行为,因此在接口中的方法都是抽象的,下表表现接口和抽象类的差异:

abstract classinterface
属性不用限制public静态final常量
构造方法可有可无没有
普通方法可以有具体方法必须是public抽象方法
子类单一继承多重实现(接口继承接口时为多重继承)
  1. 抽象类体现继承关系,一个类只能单继承。

  2. 接口体现实现关系,一个类可以多实现。

  3. 抽象类是继承is a关系。

  4. 接口是实现是like a关系。

jdk8接口的默认方法

原本接口只有抽象方法(没有方法体)jdk8中,接口可以有默认方法(可以有方法体)。

默认方法的声明很简单,直接在接口中把方法声明为default,之后再写方法的实现即可,

这样所有的实现类都会继承这个方法。

Object类

Object是类层次结构的根类,每个类都使用Object作为父类(超类)。

所有对象(包括数组)都实现这个类的方法。

它具有所有对象都具备的共同内容。

类Object在java.lang包下。没有写继承就会继承Object。

Object类是java语言中所有类的根,所有的类都直接或者间接的继承Object类。

数组也继承了Object类。

打印对象就是打印对象的(包名 类名 内存地址)。

Object类中toString方法

该方法返回一个字符串,它的值等于:包名+类名+@+内存地址

使用hashCode的时候,基本都是和equals一起使用。

既然一起使用那么重写的时候hashCode和equals方法一起重写。

finallize方法了解就可

finallize()方法是在垃圾收集器删除对象之前对这个对象调用的。

java中的包装类型

java提供一系列包装类,以便原始数据类型当做对象进行操作。

好处:基本数据类型封装成对象,在对象中定义了属性和方法。

可以方便操作该数据(得到整形最大值、最小值、进制转换)

每一个基本数据类型都有一个相应的包装类。

除了整形及字符型外,其他的包装器类型名字都是将基本数据类型首字母大写。

包装类在程序开发中主要用于基本数据类型和字符串之间的转换。

String s="10"; int i=Integer.parselnt(s);

除了Character(char类型的包装类)类外,其他的包装类都有静态的parse 数据类型 方法

用于将字符串转换成相应的基本数据类型。

包装类型Character类常用的方法:

方法原型说明
boolean isLetter(char ch)判断字符ch是否为英文字母
boolean isDigit(char ch)判断字符ch是否为0~9之间数字
boolean isUpper(char ch)判断字符ch是否为大写形式
boolean isLower(char ch)判断字符ch是否为小写形式
boolean isWhitespace(char ch)判断字符ch是否为空格或字符串

以上方法都是静态方法,可以通过类名直接调用,返回值为boolean类型。

java自动封装与拆装的使用方法

封装:基本数据类型转换为包装器类型,成为封装(boxing)。Integer i=10;

拆装:包装器类型转换为基本数据类型,成为拆装(unbing)。(int i =new Integer(10));

在自动装箱拆箱过程中,java使用到了常量池。

常量池就是方法区的一部分,是内存的逻辑分区。

枚举的概念

定义常规的静态常量后存在一些小问题:代码可读性差、易用性低、类型不安全、耦合性高、扩展性差。

枚举就是为了这样的问题诞生的,枚举在java中简称为(Enum)是一个特定类型的类。

所有枚举,都是Enum的子类(java.lang.Enum)

【访问权限】enum 枚举名{ }方法体内直接列举枚举的列表。

switch语句enum类型,使用枚举,能让我们的代码可读性更强。

本课题设计了一种利用Matlab平台开发的植物叶片健康状态识别方案,重点融合了色彩与纹理双重特征以实现对叶片病害的自动化判别。该系统构建了直观的图形操作界面,便于用户提交叶片影像并快速获得分析结论。Matlab作为具备高效数值计算与数据处理能力的工具,在图像分析与模式分类领域应用广泛,本项目正是借助其功能解决农业病害监测的实际问题。 在色彩特征分析方面,叶片影像的颜色分布常与其生理状态密切相关。通常,健康的叶片呈现绿色,而出现黄化、褐变等异常色彩往往指示病害或虫害的发生。Matlab提供了一系列图像处理函数,例如可通过色彩空间转换与直方图统计来量化颜色属性。通过计算各颜色通道的统计参数(如均值、标准差及主成分等),能够提取具有判别力的色彩特征,从而为不同病害类别的区分提供依据。 纹理特征则用于描述叶片表面的微观结构与形态变化,如病斑、皱缩或裂纹等。Matlab中的灰度共生矩阵计算函数可用于提取对比度、均匀性、相关性等纹理指标。此外,局部二值模式与Gabor滤波等方法也能从多尺度刻画纹理细节,进一步增强病害识别的鲁棒性。 系统的人机交互界面基于Matlab的图形用户界面开发环境实现。用户可通过该界面上传待检图像,系统将自动执行图像预处理、特征抽取与分类判断。采用的分类模型包括支持向量机、决策树等机器学习方法,通过对已标注样本的训练,模型能够依据新图像的特征向量预测其所属的病害类别。 此类课题设计有助于深化对Matlab编程、图像处理技术与模式识别原理的理解。通过完整实现从特征提取到分类决策的流程,学生能够将理论知识与实际应用相结合,提升解决复杂工程问题的能力。总体而言,该叶片病害检测系统涵盖了图像分析、特征融合、分类算法及界面开发等多个技术环节,为学习与掌握基于Matlab的智能检测技术提供了综合性实践案例。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值