java 中面向对象

面向对象解析
对象和类
对象:现实世界中实实在在,看的见摸得着的东西
类:具有相同的特征(属性)和行为(类的成员方法)即事务的集合
对象:是个体和数据但是类是集合,是数据结构的定义

其中设计类主要完成:描述一类对象的共同特征和共同行为

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());

    }


}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值