栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

每日学到 22

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

每日学到 22

目录

1.方法重写

1)什么是方法重写

2)方法重写规则

3)为什么要重写

2.Object类

1)Object类是所有类的父类

2)toString()

3)equals()

3.例题


1.方法重写

1)什么是方法重写

子类根据需求对从父类继承的方法进行重新编写

重写时,可以用super.方法的方式来保留父类的方法

构造方法不能被重写

2)方法重写规则

①该类的子类中

②方法名相同

③参数列表相同

④返回值类型相同或者是其子类

⑤访问权限不能严于父类

⑥父类的静态方法不能被子类覆盖为非静态方法,父类的非静态方法不能被子类覆盖为静态方法

⑦子类可以定义与父类同名的静态方法,以便在子类中隐藏父类的静态方法(注:静态方法中无法使用super)

⑧父类的私有方法不能被子类覆盖

⑨不能抛出比父类方法更多的异常

3)为什么要重写

父类的方法不满足子类的需求,就需要重写方法。

2.Object类

1)Object类是所有类的父类

2)toString()

①重写:
    public String toString() {
        return "Student{id = " + id + ", name = " + name + ", age = " + age + "}";
    }

②为什么要重写toString()方法?
        若不重写toString,输出的则是:包名.类名.@.hash码值,是地址;若重写之后则输出对象本身的值。

3)equals()

①Object类的equals()方法与==没区别

②当有特殊需求,如认为属性相同即为同一对象时,需要重写equals()

   public boolean equals(Student student){
        if (student.getId()==this.getId()&&student.getName().equals(this.getName())&&student.getAge()==this.getAge()){
            return true;
        }else{
            return false;
        }
    }

③为什么要重写equals()方法?
       “==”表示比较两个基本数据类型,“equals”表示比较两个对象。若不引入object类的equals方法,则输出为对象的地址,而引入以后则输出对象的值。

④Java.lang.String重写了equals()方法,把equals()方法的判断变为了判断其值。

3.例题

一个学生类,属性有学号,姓名,年龄,创建对象并且调用重写后的toString()。

当两个学生学号,姓名,年龄相同就认为是同一个对象,重写equals(),使用此方法进行判断两个学生信息。

package com.encapsulation.day19.demo03;

public class Student {
    private int id;
    private String name;
    private int age;


    public Student() {
    }

    public Student(int id, String name, int age) {
        this.id = id;
        this.name = name;
        this.age = age;
    }

    
    public int getId() {
        return id;
    }

    
    public void setId(int id) {
        this.id = id;
    }

    
    public String getName() {
        return name;
    }

    
    public void setName(String name) {
        this.name = name;
    }

    
    public int getAge() {
        return age;
    }

    
    public void setAge(int age) {
        this.age = age;
    }

    public String toString() {
        return "Student{id = " + id + ", name = " + name + ", age = " + age + "}";
    }

    public boolean equals(Student student){
        if (student.getId()==this.getId()&&student.getName().equals(this.getName())&&student.getAge()==this.getAge()){
            return true;
        }else{
            return false;
        }
    }
}
package com.encapsulation.day19.demo03;

public class StudentTest {
    public static void main(String[] args) {
        Student student1 = new Student(1001,"张三",22);
        System.out.println(student1.toString());// Student{id = 1001, name = 张三, age = 22}
        Student student2 = new Student(1002,"李四",23);
        System.out.println(student2.toString());// Student{id = 1002, name = 李四, age = 23}
        Student student3 = new Student(1001,"张三",22);
        System.out.println(student3.toString());// Student{id = 1001, name = 张三, age = 22}
        boolean result1 = student3.equals(student1);
        System.out.println(result1);// true
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1035305.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号