Java程序:构造CPU、PC、HardDisk、Test四个类,并重写CPU类的equals(obj)方法和toString()方法,其中Test类为主类

class CPU {
    int speed;

    public int getSpeed(){
        return speed;
    }
    public void setSpeed(int speed){
        this.speed = speed;
    }
    @Override
    public boolean equals(Object obj){
        if(this == obj){
            return true;
        }
        if(obj == null){
            return false;
        }
        if(getClass() != obj.getClass()){
            return false;
        }
        CPU other = (CPU) obj;
        return this.speed == other.speed;
    }

    /* Java规范明确要求:
    如果两个对象通过equals比较为相等(a.equals(b) == true),那么它们的hashCode必须相同。
    如果两个对象hashCode不同,它们通过equals比较一定不相等(但hashCode相同不代表equals一定为true)。
    如果只重写equals而不重写hashCode,会破坏这个契约,导致对象在哈希表等数据结构中行为异常。 */

    @Override
    public int hashCode(){
        return speed;           /* 因为equals方法仅比较了speed属性,所以hashCode也只需要基于speed计算。
                                    如果两个CPU对象的speed相等,它们的hashCode必须相同;如果speed不同,
                                    hashCode尽量不同(但不是强制要求)*/
    }

    @Override
    public String toString(){
        return String.valueOf(speed);
    }
}

class HardDisk{
    int amount;
    public int getAmount(){
        return amount;
    }
    public void setAmount(int amount){
        this.amount = amount;
    }
}

class PC{
    CPU cpu;
    HardDisk HD;
    void setCPU(CPU c){
        cpu = c;
    }
    void setHardDisk(HardDisk h){
        HD = h;
    }
    void show(){
        System.out.println("CPU speed:"+cpu.getSpeed());
        System.out.println("HardDisk amount:"+HD.getAmount());
    }
}

public class Test{
    public static void main(String args[]){
        CPU c = new CPU();
        HardDisk disk = new HardDisk();
        c.setSpeed(2200);
        disk.setAmount(200);
        PC pc = new PC();
        pc.setCPU(c);
        pc.setHardDisk(disk);
        pc.show();
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值