一、equals()方法
1、编写 Order 类,有 int 型的 orderId String 型 的 orderName ,相应的getter() 和 setter() 方法,两个参数的构造器,重写父类的equals() 方法:public boolean equals(Object obj )并判断测试类中创建的两个对象是否相等。
(1)编写 Order 类
public class Order {
private int orderid;
private String orderName;
public Order(int orderid,String orderName){
this.orderid=orderid;
this.orderName=orderName;
}
public int getOrderid() {
return orderid;
}
public void setOrderid(int orderid) {
this.orderid = orderid;
}
public String getOrderName() {
return orderName;
}
public void setOrderName(String orderName) {
this.orderName = orderName;
}
@Override
public boolean equals(Object obj) {
if(this==obj){
return true;
}
if(obj instanceof Order){
Order order=(Order)obj;
if(this.orderid==order.orderid &&this.orderName.equals(order.orderName)){
return true;
}else{
return false;
}
}else{
return false;
}
}
}
(2)编写测试类
public class OrderTest {
public static void main(String[] args) {
Order o1=new Order(12, "a");
Order o2=new Order(12,"a");
boolean result=o1.equals(o2);
System.out.println(result);
}
}
2.请根据以下代码自行定义能满足需要的 MyDate 类 在 MyDate 类中覆盖equals 方法,使其判断当两个 MyDate 类型对象的年月日都相时,结果为 true,否则为 false。
public class MyDateTest {
public static void main(String[] args) {
MyDate m1=new MyDate(14, 3, 1976);
MyDate m2=new MyDate(14, 3, 1976);
if(m1==m2){
System.out.println("m1=m2");
}else{
System.out.println("m1!=m2");
}
if(m1.equals(m2)){
System.out.println("m1 is equal to m2");
}else{
System.out.println("m1 is not equal to m2");
}
}
}
定义MyDate类,对equals()进行重写
public class MyDate {
private int day;
private int month;
private int year;
public MyDate(int day, int month, int year) {
super();
this.day= day;
this.month = month;
this.year = year;
}
public int getDay() {
return day;
}
public void setDay(int day) {
this.day = day;
}
public int getMonth() {
return month;
}
public void setMonth(int month) {
this.month = month;
}
public int getYear() {
return year;
}
public void setYear(int year) {
this.year = year;
}
@Override
public boolean equals(Object obj) {
if(this==obj){
return true;
}
if(obj instanceof MyDate){
MyDate mydate=(MyDate)obj;
if(this.day==mydate.day && this.month==mydate.month && this.year==mydate.year){
return true;
}else{
return false;
}
}else{
return false;
}
}
}
二、toString()方法
定义两个类,父类 GeometricObject 代表几何形状,子类 Circle 代表圆形。
(1)定义两个类:父类 GeometricObject和子类 Circle。
public class GeometricObject {
protected String color;
protected double weight;
public GeometricObject() {
super();
this.color="white";
this.weight=1.0;
}
public GeometricObject(String color, double weight) {
super();
this.color = color;
this.weight = weight;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public double getWeight() {
return weight;
}
public void setWeight(double weight) {
this.weight = weight;
}
}
public class Circle extends GeometricObject{
private double radius;
//***********constructor
public Circle() {
super();
//this.color="white";
//this.weight=1.0;
this.radius=1.0;
}
public Circle(double radius) {
super();
this.radius = radius;
//this.color="white";
//this.weight=1.0;
}
public Circle(double radius,String color,double weight) {
super(color, weight);
this.radius = radius;
//this.color=color;
//this.weight=weight;
}
//*************method
public double getRadius() {
return radius;
}
public void setRadius(double radius) {
this.radius = radius;
}
public double findArea(){
return Math.PI*radius*radius;
}
@Override
public boolean equals(Object obj) {
if(this==obj){
return true;
}
if(obj instanceof Circle){
Circle c=(Circle)obj;
if(c.radius==this.radius){
return true;
}else{
return false;
}
}else{
return false;
}
}
@Override
public String toString() {
return "radius="+this.radius;
}
}
(2)定义测试类进行测试
public class CircleTest {
public static void main(String[] args) {
Circle c1=new Circle(2.2);
Circle c2=new Circle(2.1,"red",2.0);
System.out.println("颜色是否相等:"+(c1.getColor().equals(c2.getColor())));
boolean isEqual=c1.equals(c2);
System.out.println("半径是否相等:"+isEqual);
System.out.println("c1的半径:"+c1.toString());
System.out.println("c2的半径:"+c2.toString());
}
}