Object类简介

本文介绍了Java中Object类的基本概念及其重要作用。Object类作为所有类的基础,提供了诸如equals()、hashCode()等核心方法,并能接收任意引用类型的对象。在实际开发中,这一特性使得使用Object作为方法参数变得非常灵活。

Object类简介


object类是所有类的公共父类,如果一个类没有明确是继承某个类,则该类默认是继承Object类

object类主要方法有:1构造方法 2public boolean equals(),对象比较(比较的实质是对象的地址)

                                        3普遍李欣桐hashCode(),取得hash码4toString(),打印对象时调用


object 接收任意引用类型的对象(包括接口类型和,数组类型)

举例:

package mjc;
interface A {
	public String getInfo();
}
class B implements A{

	@Override
	public String getInfo() {
		// TODO Auto-generated method stub
		return "HELLO WORD";
	}
	
}
//Object 可以接收任何引用类型的对象
public class Obj {
	public static void main(String args[]){
		A a = new B();
		Object obj=a;//Object 可以接收任何引用类型的对象,但是obj不具备接收对象的相关方法属性
		A a2 =(A) obj;//把obj 传回给A类的一个对象,a2具备相关方法和属性
		//此处我觉得object像是一个容器,中介,起到了传递的作用
		System.out.println(obj);//-->mjc.B@1632847
		System.out.println(a);//-->mjc.B@1632847
		System.out.println(a2);//-->mjc.B@1632847
		//obj 和 a 还有a2的地址是一样的
		System.out.println(a2.getInfo());
	}

}
结果:

mjc.B@1632847
mjc.B@1632847
mjc.B@1632847
HELLO WORD



在实际开发中的作用:

                                   因为Object类可以接收任意的引用数据类型,所以在很多的类库设计上都采用Object 作为方法

的参数,这样操作起来会比较方便。


### Java 中 `Object` 和 `Class` 的区别及用法 #### Object 简介 `Object` 是所有的父,即所有的都继承自 `Object`。它提供了一些基本的方法供子使用或重写。这些方法包括但不限于: - **toString()**: 返回该对象的字符串表示形式。 - **equals(Object obj)**: 判断当前对象与指定对象是否相等,默认实现是基于内存地址比较;通常建议在需要按逻辑意义判断两对象是否相同的时候覆盖此方法[^4]。 - **hashCode()**: 返回该对象的哈希码值,当两个对象通过 `equals()` 方法被判定为相同的条件下它们应该具有相同的哈希码值。 - **clone()**: 创建并返回一个新的对象作为原对象的一个副本。 此外还有线程同步相关的三个重要方法:`wait()`、`notify()` 及 `notifyAll()`,用于协调多个线程之间的协作。 #### Class 概述 `Class` 对象代表了 JVM 加载到内存中的某个特定型的信息,无论是原始数据型还是引用型(如数组、枚举、接口)。每个加载至虚拟机内的都会对应唯一一个 `Class` 实例。此提供了获取有关结构的各种元数据的能力,比如字段、构造器以及成员函数等信息,并支持动态创建新实例或者调用已有的静态/非静态方法——这就是所谓的反射机制的核心所在[^1]。 对于给定的对象而言,可以利用 `.getClass()` 来取得它的运行时期型描述符(`Class<?>`),进而借助于反射API来进行更深入的操作,例如上面提到的例子展示了如何通过反射去查找并执行目标对象上的某方法[^2]。 ```java // 获取String型的Class对象并通过反射调用其方法 public class MainTest { public static void main(String[] args) throws Exception { String str = "Hello, World!"; Class<?> clazz = str.getClass(); Method method = clazz.getMethod("substring", int.class, int.class); String result = (String) method.invoke(str, 7, 12); System.out.println("Result: " + result); // Output: World } } ``` #### 使用场景对比 - 当涉及到多态性和通用编程模式时,`Object` 扮演着至关重要的角色; - 而当我们想要获得关于某一具体型的更多信息或是希望能够在不知道确切型的前提下操作某些属性和行为,则应考虑采用 `Class` 所提供的功能。 #### 关键差异总结 | 特征 | Object | Class | | --- | --- | --- | | 定义位置 | java.lang.Object | java.lang.Class | | 主要用途 | 提供了一组适用于任何对象的基础方法 | 表达Java应用程序中每一个的具体信息 | | 是否可实例化 | 所有对象都是间接地从 Object 继承而来 | 每个 .class 文件只会在JVM中有一次对应的 Class 实例 |
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值