「java重写equals方法」java为什么要重写equals
本篇文章给大家谈谈java重写equals方法,以及java为什么要重写equals对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、如何重写Java中的equals方法
- 2、java定义类里重写equals方法的问题
- 3、java为什么要重写equals ?!
- 4、Java 创建简单Java 类 有参无参 重写equals方法
如何重写Java中的equals方法
//在你的类A中定义一个签名为
//@Override
//public boolean equals(Object obj)的方法就能重写(覆盖)Object类的同名方法了,
//以后调用equals方法比较两个类A的对象的相等性时,就会调用你重写的方法了。
//看例子。
public class Demo
{
public static void main(String[] args)
{
A a1=new A(1,'a'),a2=new A(1,'b'),a3=new A(1,'a');
//调用类A的重写的equals方法比较3个对象的相等性
//false
System.out.println(""+a1.equals(a2));
//true
System.out.println(""+a1.equals(a3));
//false
System.out.println(""+a2.equals(a3));
}
}
class A
{
A(int n,char c)
{
this.n=n;
this.c=c;
}
//@Override可省略
@Override
public boolean equals(Object obj)
{
System.out.println("调用了重写的类A的equals方法。");
boolean r=false;
A a;
if(obj instanceof A)
{
a=(A)obj;
r=(this.n==a.n this.c==a.c);
}
return r;
}
private int n;
private char c;
}
java定义类里重写equals方法的问题
this代表的是Person类,当前类的对象;父类引用指向子类对象是不能访问子类里的独有成员这个没有错。
o是形参,转之前先进行了判断,符合条件后才强转转成Person类,然后进行比较
下面的是标准写法,供你参考
通常自己的类里面这样重写equals方法,如果重写equals,则必须重写hashcode方法
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Share other = (Share) obj; // 换成你自己的类
if (cn_share_id == null) {
if (other.cn_share_id != null) // 要比较的成员
return false;
} else if (!cn_share_id.equals(other.cn_share_id))
return false;
return true;
}
java为什么要重写equals ?!
重写并不是说object类里面的equals方法有缺陷,而是为了不同场景的需要。不同对象相同的方法不一样。
比如说对象是人,它有2个属性,name和height。有AB两个人,我们怎么来判断这两个人是同一个人还是不同的人,这里就要用到比较 , A.equals(B);
这里的equals就需要重新object类里的方法,来告诉程序,怎么判断2个人是同一个人
1。名字相同他们就是同一个人
2。name 和height 相同才是一个人
所以需要重新,例子简单不晓得你看明白没。
Java 创建简单Java 类 有参无参 重写equals方法
package com.sxl.test;
public class Person {
//属性:姓名、性别、年龄
private String name;
private String sex;
private int age;
//无参构造
public Person() {
super();
}
//带参构造
public Person(String name, String sex, int age) {
super();
this.name = name;
this.sex = sex;
this.age = age;
}
//重写equals方法
@Override
public boolean equals(Object arg0) {
if(arg0 == Person.class) {
return true;
}
return false;
}
}
java重写equals方法的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java为什么要重写equals、java重写equals方法的信息别忘了在本站进行查找喔。
发布于:2022-12-19,除非注明,否则均为
原创文章,转载请注明出处。