敲代码练习总结,对过去知识的补缺补漏

本文总结了在学习Java时关于Object类equals方法重写的问题,探讨了引用数据类型的强制转换规则,强调了多态方法形参需为父类类型。通过实例分析了方法重写时返回值和多态调用的区别,特别是new子类对象调用父类equals方法时的注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在学到对Object类equals方法的重写的时候遇到一个问题总结一下
引用数据类型的强制转换一定要时父子类吗?
一定要是,并且遵循基本数据类型的转换模式,大转小需要强转,小转大可以直接转。

怎么理解方法重写的时候返回值是

 return super.equals(obj);

为什么多态的方法形参一定要写个父类的
父类的方法形参在new对象调用的时候可以在形参内new一个要调用的重写的子类的方法

方法的多态性可以用两个方法表现
1.

方法区
Father fa =new son;
fa.fa(调用儿子重写方法)
如 
public void fa(){
sout "我是爸爸"
}
pubic void fa(){
sout "我是儿子"
}
父类写一个方法形参列表要是父类
如 public void Method(Father father){
}

方法区调用
Father ff =new Father;
ff.Method(new son());

Object类重写的代码例子
这个重写的代码放在父类或者子类代码都是不一样的,且调用的方式不一样返回的结果也会不一样,总的来说代码有BUG,但能够看出BUG就很棒了。
new子类调用丢父类进去,和new父类调用丢子类进去的结果不一样。
放在子类通过父类调用equals是要强转的比较合理的。
放在父类通过父类调用equals不用强转,需要改代码,也是ok的。

package wrap_overwrite;

public class text_object {
    public int age;
    public String name;
    public text_object(){

    }
    public text_object(int age, String name){
        this.age=age;
        this.name=name;
    }
    public void gettotal(){
        System.out.println(age);
        System.out.println(name);
    }
    public void text(text_object obj){
        System.out.println("我是爸爸");
    }

}
package wrap_overwrite;

public class text_inherite extends text_object {
    public int age;
    public String name;
    public text_inherite(){

    }
    public text_inherite(int age,String name){
        this.name=name;
        this.age=age;
    }
    public void ni(){

    }
    public void text(text_object obj){
        System.out.println("我是儿子");
    }
    @Override
    public boolean equals(Object obj) {
        System.out.println("我重写");
        if (this == obj) {
            System.out.println("我进去了吗");
            return true;
        }
       else if (obj instanceof text_object) {
            System.out.println("到得了吗");
            text_inherite inherite = (text_inherite) obj;
            return inherite.age == this.age && this.name.equals(inherite.name);
        }else {
                System.out.println("我怎么到这里了");
                return false;
        }

    }
}

package wrap_overwrite;

public class text_user {
    public static void main(String[] args) {
        text_object objectd =new text_object(20,"kevin");
        text_inherite inherite =new text_inherite(20,"kevin");
        System.out.println(objectd.equals(inherite));
    }
}




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值