首页 > 其他分享 >重写equals方法

重写equals方法

时间:2023-11-14 19:44:58浏览次数:36  
标签:studentId User2 重写 void equals return studentClass 方法 public

前言:

重写equals方法能够学习到多态、instanceof

代码实现:

public class Super{
    public static void main(String[] args) {
        Super.User1 user1 = new Super.User1();
        Super.User2 user2 = new Super.User2();
        System.out.println(user2.equals(user1));
    }
    interface IUser{
        int number = 0;
        String name = "里斯";
        public void doing();
        public void toDo();
    }
    static class User1 extends User2{
        private int studentId = 1342432423;
        private String studentClass = "二班";

        public int getStudentId() {
            return studentId;
        }

        public void setStudentId(int studentId) {
            this.studentId = studentId;
        }

        public String getStudentClass() {
            return studentClass;
        }

        public void setStudentClass(String studentClass) {
            this.studentClass = studentClass;
        }

        public void doing(){
            System.out.println("User1类正在做");
        }
        public void toDo(){
            System.out.println("User1类已经做过");
        }
    }

    static class User2 implements IUser{
        private int studentId = 1342432423;
        private String studentClass = "二班";

        public int getStudentId() {
            return studentId;
        }

        public void setStudentId(int studentId) {
            this.studentId = studentId;
        }

        public String getStudentClass() {
            return studentClass;
        }

        public void setStudentClass(String studentClass) {
            this.studentClass = studentClass;
        }

        public void doing(){
            System.out.println("User2类正在做");
        }
        public void toDo(){
            System.out.println("User2类已经做过");
        }
        //使用Object的原因是它是所有类的父类,于是有了Obejct obj = new User1();把User1类向上转型为obj对象
        public  boolean equals(Object obj){
            //如果比较的是自己本身
            if(obj == this){
                return true;
            }
            //考虑到程序的健壮性,在方法的形参是引用类型的时候,建议做非null处理
            if(obj == null){
                return false;
            }
            // 两个对象的类型都不一致,对象肯定不一致
            if (getClass() != obj.getClass())
                return false;

            if(obj instanceof User2){
                //将obj对象向下转型为User2类
                User2 user = (User2) obj;
                //这里添加我们想要判断的条件
                if(this.getStudentClass().equals(user.getStudentClass()) && this.getStudentId() == user.getStudentId()){
                    //studentClass和studentId都相等的情况下
                    return true;
                }
            }
            return false;
        }

    }

}

总结:

instanceof左边必须是右边的类或者是子类的实现对象

标签:studentId,User2,重写,void,equals,return,studentClass,方法,public
From: https://www.cnblogs.com/new-one/p/17832362.html

相关文章

  • 向下转型的话,可以访问的是父类还是子类的成员方法和成员属性?
    前言:对于多态的一些概念存在模糊,于是这次来挑一下特别容易误解的点。正文:向下转型(downcasting)是将父类的引用转换为子类的引用。例如,如果User2继承自Object,你可以这样做:Objectobj=newUser2();//这是向上转型User2user2=(User2)obj;//这是向下转型在这个例子......
  • 向上转型之后可以调用的成员方法和成员属性是父类的还是子类的?
    前言:对于多态的一些概念存在模糊,于是这次来挑一下特别容易误解的点。正文:在Java中,向上转型(upcasting)是将子类的对象引用赋给父类的引用。例如,如果User2继承自Object,那么你可以这样做:User2user2=newUser2();Objectobj=user2;//这就是向上转型在这个例子中,obj是O......
  • EB-tresos安装完成后,导入项目工程失败的解决方法
     1.导入项目例程选中文件后,出现了两行报错,没法去进行Mcal配置。  2.找到例程的文件夹,点进MCAL后再点入EB_Plugins文件夹,点击上面的路径,可以Ctrl+C复制到剪贴板。  3.找到EB软件的安装路径,打开tresos文件夹,在打开links文件夹,双击里面的link后缀文件,用记事本打开。......
  • JavaScript实现Date( ) ——日期格式化的三种常用方法
    Date()介绍Date()基本使用Date()日期对象是构造函数,必须使用new来调用我们的日期对象。若Date()没有参数时返回当前时间若Date(timer)有参数时返回参数设置的时间参数写法:'2012-2-208:54:32'(字符串)返回值格式:SunMay28202323:36:28GMT+0800(中国标准时间)......
  • SMT贴片生产加工的质量控制方法
    SMT贴片生产加工是一种现代电子技术的封装方式,它通过将电子元器件直接贴片到印刷电路板上,取代了传统的插针式封装方式,具有体积小、重量轻、可靠性高的优点。为了确保SMT贴片生产加工的质量,需要使用一系列的质量控制方法。本文将介绍几种常用的SMT贴片生产加工质量控制方法。1、原材......
  • 视频推拉流EasyDSS直播点播平台获取指定时间快照的实现方法
    视频推拉流直播点播系统EasyDSS平台,可提供流畅的视频直播、点播、视频推拉流、转码、管理、分发、录像、检索、时移回看等功能,可兼容多操作系统,在直播点播领域具有广泛的场景应用。为了便于用户集成、调用与二次开发。今天我们来介绍下在EasyDSS中,获取指定时间快照的实现方法。在Ea......
  • JavaScript slice 方法用法与实例解析
    在JavaScript中,slice()是一个常用的数组方法,用于从现有数组中提取一部分元素,然后返回一个新的数组。它是一个非常有用的工具,可以帮助你在不改变原始数组的情况下操作数组的子集。本文将介绍slice()的基本概念、使用方法、实践案例和互动练习,以帮助你更好地理解和掌握这一功能......
  • python列表中的字符串转成整型的几种方法
    python中在不同类型数据转换方面是有标准库的,使用非常方便。但是在开发中,经常在list中字符转成整形的数据方便遇到问题。这里就记录一下常用的几种方法。方法一:最基本的方法:通过轮训整个list来实现转换,具体代码如下:test_list=['1','3','2','6','8']print("Originallistis:"+......
  • python列表中的字符串转成整型的几种方法
    python中在不同类型数据转换方面是有标准库的,使用非常方便。但是在开发中,经常在list中字符转成整形的数据方便遇到问题。这里就记录一下常用的几种方法。方法一:最基本的方法:通过轮训整个list来实现转换,具体代码如下:test_list=['1','3','2','6','8']print("Originallistis:......
  • ASP.net MVC3 报错"未找到视图“Index”或其母版视图,或没有视图引擎支持搜索的位置 "
    https://www.cnblogs.com/allenhua/p/3746578.html注意添加MVC3视图不能直接在View文件下新建视图,而是在控制器的Index右击添加视图,就会在View下面产生一个Product文件夹(包含Index.cshtml)就可以解决这个问题。具体如图:  ......