java的Object类理解和接口的定义

深入了解Java中的Object类 在Java开发中,Object类是一个非常重要的类。它是所有类的超类,也就是说,所有的对象都是Object类的实例。因此,了解Object类的方法和属性对于Java开发者来说是非常必要的。本文将详细介绍Object类的相关知识,包括其定义、常用方法和应用场景等,希望能够帮助读者更好地理解和使用Object类。Object类是Java语言中最基本的类之一,它是所有类的祖先。在Java中,所有的类都是直接或者间接继承自Object类。因此,Object类的属性和方法对于Java开发者来说非常重要。 阅读详情

一、Object类简单理解

我们刚开始接触到java时,最常做的是如何使用class关键字定义一个类,在这其中就应用到了继承的原理,因为所有的类都直接或者间接继承了java.lang.Object类。Object类是一个很特殊的类,它是所有类的父类,是java类层中的最高层类。当创建一个类时,总是在继承,除非某个类已经要从其他类继承,可见java中的每个类都源于java.lang.Object类。

例如String、Integer、Random等等都是继承于Object类,除此之外,自己定义的类也都是继承Object类。因为所有的类都是Object类的子类,所有通常会把extends Object关键字给省略。

class Son{ //自定义的一个类,名字为Son

    //代码

}

其实上面的类等价于下面的形式


class Son extends Object{//上下两中形式等价,其实就是一个类
    //代码
}

二.Object类的常用方法

在Object类中主要包括了clone()、finalize()、equals()、toString()等方法,其中最常用的两个方法为equals()和toString()方法。由于所有类都继承Object类,所以任何类都可以重写Object类的方法;

注意:Object类中的getClass()、notify()、notifyAll()、wait()等方法不能被重写,因为这些方法为final类型。

*getclass()方法

getClass()方法是Object类定义的方法,他会返回对象执行时实例的Class实例,然后使用此实例调用getName()方法可以得到类的名称。

语法如下:

getClass().getname();

可以将getclass()方法与toString()方法联合使用。

*toString()方法

toString()方法的功能是将一个对象返回为字符串形式,它会返回一个String实例对象。在实际应用中通常重写toString()方法,为提供一个特定的输出模式。当这个类转换为字符串或与字符串连接时,将自动调用重写的toString()方法。

在项目中创建一个ObjectTest类,在类中重写Object类的toString()方法,并在主方法中输出该类的实例对象。

package Demo;

public class ObjectTest {
	public String toString(){
		return "在"+getClass().getName()+"类重写toString()方法";
	}
	public static void main(String []args){
//		ObjectTest obj=new ObjectTest();
//		String s=obj.toString();
//		System.out.println(s);
		System.out.println(new ObjectTest()); //这一句代码将此类对象转换成字符串,与上述三行代码的执行结果一样
	}
}

输出效果图:

在本类的事例中重写了Object的toString()方法,在子类的toString()方法中使用Object类中的getClass()方法获取当前运行的类名,定义一段输出字符串,当用户打印ObjectTest类对象时,将自动调用toString()方法;

*equals()方法

据我所知好友一种比较的方法就是使用“==”运算符,“==”运算符比较的是两个对象的引用是否相等,而equals()方法比较的是两个对象的实际内容。

下面我举一个实例,调用equals()方法来判断两个对象或者字符串是否相等。

public class Equals {//自定义类

}

public class TestEquals {
public static void main(String []args){
	String s1="hello";		//实例化两个对象
	String s2="hello";
	System.out.println(s1.equals(s2));//使用equals()方法调用,比较的是内容,返回true
	System.out.println(s1==s2);//两个变量s1、s2指向的是统一个地址,并没有new一个新的对象;比较的是地址,返回true
	
	String s3=new String("abc");
	String s4="abc";
	System.out.println(s3==s4);//此时它们的地址不同返回的是false
	
	Object o1 =new Object();
	Object o2 =new Object();
	System.out.println(o1.equals(o2));//Object类中的equals方法比较的是两个对象的引用,返回false

    Equals e1 = new Equals();
	Equals e2 = new Equals();
	System.out.println(e1.equals(e2));//两个自定义类使用equals()方法进行比较,比较的是地址,返回false
}
}

在上述实例的结果中可以看出,两个自定义类的对象进行比较,比较的是它们的地址,调用equals()方法,返回值是false。要想比较的是内容,必须重写equals()方法;

三.接口的定义

接口是抽象类的延伸,可以将它看做是纯粹的抽象类,接口中的所有方法,都没有方法体。

接口使用interface关键字进行定义,其如法如下所示:

public interface Shape{
    public static final int a=3;定义一个常量
    public abstract void work();//接口内的方法,public、abstract关键字都可以省略
}

注意: ,在借口中定义的方法必须是public或者abstract形式,其他修饰权限不被编译器认可,即使不将方法声明为public形式,它也是public形式,在接口中定义任何字段自动是static和final的;

一个类要实现接口可以使用implements关键字:

public class Equals implements InterfaceTest{
public void work(){
	System.out.println("方法重写成功");
}
}

可以在继承一个类的同时还能实现接口:

public class Equals extends Demo implements InterfaceTest{
    public void work(){
	    System.out.println("方法重写成功");
    }
}

也可以定义一个接口继承另一个接口:

interface in1{

}

interface in2 extends in1{

}

一个类可以实现多个接口:接口与继承

class 类名 implements 接口1,接口2,....{

}

 

手把手教你用LIO-SAM搞定激光雷达和IMU联合标定(附避坑指南) 本文详细介绍了使用LIO-SAM进行激光雷达与IMU联合标定的全流程,包括标定原理、工具选型、硬件配置、数据采集、LI_calib标定步骤及LIO-SAM集成验证。特别提供了避坑指南和参数优化技巧,帮助开发者高效完成传感器标定,提升自动驾驶和机器人定位精度。 阅读详情

相关推荐

深入解析JESD204B Periodic SYSREF在多ADC/DAC系统中的同步优化策略

本文深入探讨了JESD204B Periodic SYSREF在多ADC/DAC系统中的同步优化策略,针对雷达阵列和宽带通信系统中的同步精度问题,详细解析了硬件实现细节、参数配置实战经验及系统级优化方法。通过案例分析和技术要点,帮助工程师解决由温度漂移和时钟抖动引起的同步挑战,提升系统性能。

weixin_29267307的博客 137

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

接口(interface) 接口跟抽象类特别像 用来拓展定义类的功能,可以弥补java中单继承的缺点 类是单继承,只能继承一个类,只能有一个爹,接口可以弥补 硬件类接口(用户界面) 软件类接口(是由程序员设计出来的) 在java接口中,只有抽象方法没有方法实现。 因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为。 定义接口的格式 【修饰符】interface接口名{} 接口中的成员修饰符是固定的: public static final 修饰的变量为常量,该

Lin724915的博客 754

【UE5】三步搞定Pixel Streaming:从零搭建Windows像素流服务

本文详细介绍了如何在Windows平台上快速搭建UE5 Pixel Streaming像素流服务,从插件安装、项目打包到服务启动的全流程操作。通过实战案例和优化配置,帮助开发者实现零客户端配置、跨设备兼容的高性能3D应用流式传输,特别适合建筑可视化和实时协作场景。

weixin_29000991的博客 318

Object类、类型转换、接口

Object类、类型转换、接口 Object类:是java中所有类的父类(直接继承或间接继承) 常用的方法: 1)、toString()把对象以字符串的形式显示 对象引用时,默认调用toString()方法,显示对象的地址,想要显示对象的信息,必须重写toString()放 2)、equals()方法,比较对象是否相等 ,比较的是对象的地址和内容 ==:比较基本数据类型->数值,引用数据类型->地址 instanceof:用来判断对象是否属于某个类型的一个对象 类型转换

JavaJackmake的博客 645

PyTorch模型生产部署:ONNX/Triton导出与高可用架构实战

机器学习模型部署本质是训练环境与生产环境之间的运行时契约建立过程,涉及序列化协议、推理引擎兼容性、动态批处理及资源隔离等核心问题。ONNX凭借标准化算子集和跨框架支持,成为平衡兼容性、性能与可维护性的首选导出格式;Triton Inference Server则通过原生多框架支持、动态batching和热加载能力,显著提升GPU利用率与服务SLA保障水平。在金融风控、电商推荐等高要求场景中,基于ONNX+Triton+K8s的分层架构可稳定支撑千级QPS与毫秒级P95延迟,同时满足模型热更新、可观测性与版本

weixin_33857679的博客 447

5.4 磁悬浮轴承控制系统仿真:在MATLAB/Simulink中搭建包含功放、传感器模型的闭环系统模型,进行稳定性与动态性能仿真

磁悬浮轴承控制系统仿真方法 摘要:磁悬浮轴承控制系统仿真需建立包含转子动力学、传感器、控制器、功率放大器和电磁执行器的高保真非线性模型。通过MATLAB/Simulink搭建闭环系统,重点建模传感器带宽限制与噪声、功放饱和特性以及电磁力非线性。仿真分析包括时域阶跃响应、扰动抑制测试,频域稳定性分析(伯德图、奈奎斯特图),以及参数摄动下的鲁棒性验证。关键要验证控制算法在非线性因素影响下的稳定性和动态性能,为实际系统实现提供可靠依据。仿真中需特别注意物理量单位一致性和数字控制离散化效应。

技术工作者 1105

关于java接口跟object类的关系

前情提要 今天在琢磨java原型设计模式的时候发现一个困惑的事情,如下代码 原型接口 public interface Prototype { public Object clone(); } 具体原型类 public class ConcretePrototype implements Cloneable,Prototype { } 我发现这里我如果直接这么写的话,直接是报错 Ex...

huzd博客 1605

【feature_column处理】- indicator_column(指示列)和embedding_column(嵌入列)

1. 开胃菜 我们先来了解一下tf.feature_column.input_layer def input_layer(features, feature_columns, weight_collections=None, trainable=True, cols_to_vars=None, cols_to_output_tensors=None)

DataAlgo 1485

【Java开发】抽象类和接口以及Object类的详解

本期讲解:抽象类、接口、Object类,文章通过抽象类的基本概念、抽象类的具体实现和接口的基本概念、接口的实现。再到Object实现重写equals方法。

我的主页 1226

TwinCAT3与Matlab Simulink集成开发:如何快速生成和调试TcCOM模块

本文详细介绍了如何将TwinCAT3与Matlab Simulink进行深度集成,实现从控制算法模型到实时TcCOM模块的高效开发。通过环境搭建、模型配置、代码生成、系统集成与调试的完整流程,工程师可以快速将Simulink算法部署到倍福实时控制平台,大幅缩短开发周期并提升可靠性。

ik67890123的博客 223

Python接口自动化测试实战:Requests+Pytest+Excel+Allure框架搭建指南

接口自动化测试是现代软件工程中保障软件质量的关键实践,其核心原理是通过脚本模拟客户端请求,自动验证API的功能、性能和可靠性。在Python技术栈中,Requests库以其简洁的API成为处理HTTP请求的基石,而Pytest框架则凭借其灵活的Fixture机制和强大的参数化功能,为测试用例的组织与执行提供了优雅的解决方案。结合Excel进行数据驱动测试,能够有效实现测试数据与脚本逻辑的分离,提升协作效率;最终通过Allure生成可视化测试报告,清晰呈现测试结果与过程。这套技术组合(Requests, Py

weixin_28677451的博客 304

java常用应用程序编程接口(API)——Object类概述及常用方法

java常用应用程序编程接口(API)——Object类概述及常用方法

快乐学习,daydayup! 629

电路中的DGND、GROUND、GROUND_REF的区别,VREF、VCC、VDD、VEE和VSS的区别?

DGND是数字地,是数字电路部分的公共基准端,用于连接数字电路的接地。

XU157303764的博客 2336

Java类和对象-抽象类与接口

Object类里还有许多方法,随着Java学习的深入,我们可以了解更多关于Object类方法的应用以及如何重写最为合适。

2301_80693713的博客 715

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Java之抽象类和接口*

Java之抽象类和接口*

2301_80174936的博客 1023

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Object类、关键字final、接口(interface)

1、Object类 它是所有类的父类,如果一个类没有使用extends关键字明确标识继承另外一个类,那么这个类就默认继承Object类。因此,Object类是Java类层中的最高层类,是所有类的超类。 换句话说,Java中任何一个类都是它的子类。由于所有的类都是由Object类衍生出来的,所以Oject类中的方法适用于所有类。 public class Person{// 当没有指定父类时...

weixin_30770495的博客 149

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

JAVA基础初探(六)Object类概述(toString,equals)、JAVA多态、抽象类(abstract)、JAVA接口(interface)

该篇博客目录 1、Object类概述(toString,equals) 2、JAVA的多态 3、JAVA抽象类(abstract) 4、JAVA的接口(interface) 一、Object类概述(toString,equals) Object类是所有类的父类 如果一个类没有使用extends明确标识继承另外一个类,那么该类默认继承Object类 Object

浅然的专栏 805

从0开始学Java系列 day11:一些关键字和object类中常用方法,抽象与接口

一.虚方法和非虚方法 虚方法:可以重写的方法 非虚方法:不可以重写的方法:静态方法 构造方法 私有方法 二.final final修饰的类不能被继承 (太监类) final修饰的变量 是常量 final修饰的方法 不能被重写 final修饰的对象 地址值不能被改变 三.object类 object类是所类直接或者间接的父亲 如果一个类没有显示的继承另一个类 则此类 默认继承自object类 四.native 本地的 本国的 原生的 1.native 只能是修饰方法 2.native方法没有方法体 3.ja

weixin_51716290的博客 185

Java中的Object类和Class类

Copyright©Stonee 在Java中,无论是类还是接口,它们在JVM的内存逻辑模型中都会存在Super和Class指针,分别指向根类(Object类)和反射类(Class类) 在这一篇blog中会了解到很多常用方法,建议大家看api 1. 位置和内容 Object类和Class类都位于 java.lang. 包中,使用时均无需导入 我们可以在jdk或者IDE甚至是官方文档中找到,当...

王星星 1万+

Java中接口和抽象类继承Object类吗?

紧接着后面是常量池,前两个字节是常量中的常量数量,后面是常量池的内容;类索引为:0x0002,换算成10进制是2,找常量池中为#02(#02 表示常量池中的第二项常量)的值,为 #11,再找#11,为Test1(此处为类的全类名。而对于没有继承任何类的抽象类而言,如果它没有继承Object,那么当一个普通类继承这个抽象类的时候,这个普通类也肯定没有继承Object,悖论。可以查看一个类的常量池,从而查看常量池中最后一个常量的值,然后再根据class文件找出对应的值,即可确定常量池的末尾。

qq_52992141的博客 1437

一篇文章带你深入理解 Object 类和 Class 类

在Java中,无论是类还是接口,它们在JVM的内存逻辑模型中都会存在Super和Class指针,分别指向根类(Object类)和反射类(Class类) Object类 和 Class 类都位于 java.lang. 包中,使用时均无需导入 在Java的世界里,一切皆是对象,所有的对象都是继承于Object类,而记录对象的类型的信息是由Class类来完成的 文章目录一、Object 类二、Class...

南淮北安的博客 3971

Java的接口与内部类、Object类

本文介绍了Java中的三个核心概念:1.接口(完全抽象的引用类型),通过支付案例演示了"一个接口,多种实现";2.内部类(四种类型及特性),通过数组迭代等案例展示了其组织代码和数据共享的优势;3.Object类(所有类的终极父类),重点讲解了其作为类型根的意义、toString()方法重写机制及多态支持。这些特性共同构成了Java面向对象编程的基础,体现了契约编程、代码复用和多态等核心思想。

bit866319519的博客 952

吃透Java基础五:Class类和Object类

在Java的世界里,一切皆是对象,所有的对象都是继承于Object类,而记录对象的类型的信息是由Class类来完成的,下面就让我们来具体了解一下Class类和Object类。 一:Class类 每个类的运行时的类型信息就是用Class对象表示的,它包含了与类有关的信息,其实我们的实例对象就通过Class对象来创建的。Java使用Class对象执行其RTTI(运行时类型识别,Run-Time Typ...

吃透Java 1955

Java 类和接口

eg:String str1 此时的str1就是String类的对象或者实例;:可以理解为文件下的路径,比如com.xyz。记录一些个人的理解,可能不太对。

个人学习的一些笔记 1170

夯实Java基础系列9:深入理解Class类和Object类

本文对java的Class类和Object类的概念和原理做了详尽的介绍,并且详细介绍了Object的各种方法,以及这两个类之间的关系。 Class类和Object类是Java中最根本最重要的两个类,理解它们是理解Java面向对象技术的基础,也是学习所有进阶Java技术的基石。 具体代码在我的GitHub中可以找到 https://github.com/h2pl/MyTech 文章首...

Java技术江湖 5059

java定义一个类_Java类的定义格式:Java如何定义一个类

在面向对象的思想中,最核心的就是对象。为了在程序中创建对象,首先需要定义一个类。类是对象的抽象,它用于描述一组对象的共同特征和行为,例如人都有姓名、年龄、性别等特征,还有学习、工作、购物等行为。以面向对象的编程思想,就可以将某一类中共同的特征和行为封装起来,把共同特征作为类的属性(也叫成员变量),把共同行为作为类的方法(也叫成员方法)。本节将对Java中类的定义格式、类的成员变量和成员方法进行详细...

weixin_29745227的博客 1万+
上一篇: 内部类
下一篇: 方法的重载和方法的重写
coder150806
博客等级 码龄8年 79粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值