javaSE-面向对象-Object

本文深入探讨了Java中Object类的equals方法与Person类的toString方法的实现原理及应用。通过具体的代码示例展示了如何正确地重写equals方法来比较自定义类的对象,并解释了toString方法的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/*
Object:所有类的超类。

所有对象都具备的方法定义在该类中。


1.equals.

*/

class Demo //extends Object
{
	/*
	public boolean equals(Object obj)
	{
		return this == obj;
	}
	*/

	private int num ;
	Demo(){}
	Demo(int num)
	{
		this.num = num;
	}

	/*
	比较Demo对象中的num是否相同。既然父类中已经定义了比较元素相同的功能。
	那么子类就不需要在重新定义,直接覆盖父类中的方法,定义自己的内容即可。
	*/
	public boolean equals(Object obj)//Object obj = new Demo(4);
	{
		if(!(obj instanceof Demo))
			return false;//throw new ClassCastException("类型错误!");
		Demo d = (Demo)obj;
		return this.num == d.num;
	}

}
class Person
{
	/*
	通常一个类都会覆盖toString方法。建立该类自己的对应的字符串表现形式。
	*/
	public String toString()
	{
		return "person haha";
	}
}


class ObjectDemo 
{
	public static void main(String[] args) 
	{	

		Person p1 = new Person();
		Person p2 = new Person();
		Class c1 = p1.getClass();//获取person对象所属的字节码文件对象。这个对象的类型Class.
		Class c2 = p2.getClass();
		System.out.println(c1==c2);
		System.out.println(c1.equals(c2));

		System.out.println(c1.getName());

		System.out.println(Integer.toHexString(p1.hashCode()));//26752749

		System.out.println(p1);//Person@19836ed
		System.out.println(p1.toString());//Person@19836ed
//		String s = p1.toString();

//		Demo d1 = new Demo(4);
//		Demo d2 = new Demo(4);		
//		System.out.println(d1.equals(d2));

//		Demo d1 = new Demo();
//		Demo d2 = new Demo();
//		Person p = new Person();
//		boolean b = d1.equals(p);
//		System.out.println("b="+b);
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值