面向对象解析
对象和类
对象:现实世界中实实在在,看的见摸得着的东西
类:具有相同的特征(属性)和行为(类的成员方法)即事务的集合
对象:是个体和数据但是类是集合,是数据结构的定义
对象和类
对象:现实世界中实实在在,看的见摸得着的东西
类:具有相同的特征(属性)和行为(类的成员方法)即事务的集合
对象:是个体和数据但是类是集合,是数据结构的定义
其中设计类主要完成:描述一类对象的共同特征和共同行为
package com.test.springboot.bean;
/**
* car的实体
*没有写构造方法,就会有一个默认无参构造方法,一旦自己写了有参构造方法,就不会有无参构造方法
* @author Administrator
* @date 2018/1/29 0029
*/
public class Car {
private int num;
private String color;
private double price;
/**
* 无参的构造
*/
public Car() {
}
public Car(int num, String color) {
this.num = num;
this.color = color;
}
/**
* 有参构造方法:简化成员变量赋值
* 当形式参数和成员变量名称一致的时候,这个时候使用this
* this 代表当前对象
* this():代表本类中的无参的构造方法
* this(参数):代表本类中的有参的构造方法
*/
public Car(int num, String color, double price) {
this(num, color);
this.price = price;
}
/**
* 如无equal()方法会调用父类的方法
*
* @param obj
* @return
*/
@Override
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
/**
* 判断obj是否是car的实例
*/
if (!(obj instanceof Car)) {
return false;
}
Car car = (Car) obj;
if (this.num != car.num) {
return false;
}
if (!this.color.equals(car.color)) {
return false;
}
if (this.price != car.price) {
return false;
}
return true;
}
@Override
public int hashCode() {
int result;
long temp;
result = num;
result = 31 * result + (color != null ? color.hashCode() : 0);
temp = Double.doubleToLongBits(price);
result = 31 * result + (int) (temp ^ (temp >>> 32));
return result;
}
/**
* 好比对象的说明书
*/
@Override
public String toString() {
return "Car{" +
"num=" + num +
", color='" + color + '\'' +
", price=" + price +
'}';
}
public static void main(String[] args) {
Car car = new Car(4, "黑色", 12233396.00);
Car car2 = new Car(4, "黑色", 12233396.00);
/**
* 打印对象名字,会默认调用toString()方法
*/
System.out.println(car);
/**
* == 和equal方法的区别
* == :比较对象的内存地址是否一致或者是基本数据类型是否一致
* equal :比较两个对象的内容是否一致
* 如果两个对象使用equal方法比较返回结果是true,要求她们的hashcode一样
*/
System.out.println("car和car2是否相同" + car.equals(car2));
System.out.println(car == car2);
System.out.println(car.hashCode());
System.out.println("car2的hashcode的方法" + car2.hashCode());
}
}