Java 随笔(三)

文章展示了在Java编程中,尝试在子类`Skills`中重写`equals`方法时遇到的问题。错误提示表明子类的方法并未覆盖父类的同名方法。此外,代码还涉及到了继承、`instanceof`操作符的使用,以及自定义`toString`和`equals`方法来比较Hero对象的逻辑。
摘要由CSDN通过智能技术生成

随便写了写,但是又知道了一个东西。
那就是方法重写不能在子类,若写在子类会报以下错误:
Method does not override method from its superclass

/*
继承extends、instanceof的使用、重写toString、equals;
 */
class Hero{
    public String name;
    public String useWeapons;
    public Hero(String name, String useWeapons){
        this.name = name;
        this.useWeapons = useWeapons;
    }
    @Override
    public String toString(){
        return name + "use" + useWeapons;
    }
    /*
     * 重写equals()
     * 需求:在Hero类中重写,对比两个Hero对象,只要两个对象的name相同,就认为相等。*/

    public boolean equals(Object obj){
        if(obj != null){
            if(obj instanceof Hero){
                Hero Test = (Hero) obj;
                if (Test.name == this.name){
                    return true;
                }
            }
        }else {
            return false;
        }
        return false;
    }

}

class Skills extends Hero{
    String Q;
    String E;
    String passive;
    public Skills(String name, String useWeapons, String E, String Q, String passive) {
        super(name, useWeapons);
        this.E = E;
        this.Q = Q;
        this.passive = passive;
    }

}


public class Main {
    public static void main(String[] args){
        Skills skills = new Skills("夜兰", "弓箭", "绳子", "骰子", "奔跑");
        Hero heros = new Hero("夜兰", "弓箭");
        System.out.println(skills instanceof Hero);
        System.out.println(skills instanceof Skills);
        System.out.println(skills instanceof Object);
        System.out.println(skills.equals(heros));
        System.out.println(skills.toString());
    }

}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值