方法重写(学习笔记)

方法重写(学习笔记)

什么是方法重写?

  • 在子父类中, 如果出现了一模一样的方法, 这种现象称之为方法重写。
  • 注意:重写后,方法的访问,会使用子类方法 。

什么情况下需要对父类的方法重写?

  • 当父类的方法满足不了子类需求, 子类就可以对父类的方法进行重写;
  • 重写小技巧:使用@Override注解,他可以指定编译器,检查我们重写的方法是否合格,可读性更好;
  • 方法之间必须有子父类之间的关系,方法的参数类型和返回值类型需一致;
  • 子类重写父类方法时候,子类的访问权限必须等于或小于父类方法的访问权限;
  • 私有方法、静态方法无法重写。

重写equals方法和toString方法

创建一个Student类

import java.util.Objects;

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

    public Student() {
    }

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

    /**
     * 重写equals方法的目的就是为了比较对象的内容
     */
    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Student student = (Student) o;
        return age == student.age && Objects.equals(name, student.name);
    }

    /**
     * public String toString() 将对象的地址转成一个字符串。
     * public boolean equals(0bject o)判断两个对象是否相等。
     * protected object clone()对象克隆
     */

    /**
     * 因为Object类中的toString() 是将对象的地址转成字符串 , 所以最终打印也是对象的地址
     * 那么这种情况满足不了子类的需求
     *
     * 以后只要是编写一个模板类 就建议重写 toString()方法
     * 重写的目的: 是为了展示对象的内容
     */
    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

创建一个测试类StudentTest

/**
 * 演示 equals方法
 */
public class StudentEqualsTest {
    public static void main(String[] args) {
        //创建一个学生对象
        Student s1 = new Student("张三",19);

        Student s2 = new Student("张三",19);

        //调用equals方法进行比较
        boolean rs = s1.equals(s2);     //重写之后就是true 否则是false
        System.out.println(rs);

        //System.out.println(s1 == s2);  //false


        //创建学生对象
        Student s3 = new Student();
        //输出语句 只要是打印对象名 其实都会在源码的底层 默认的调用Object类的toString方法
        System.out.println(s3);              //com.heima.d3_object.demo1.Student@1b6d3586
        System.out.println(s3.toString());   //com.heima.d3_object.demo1.Student@1b6d3586


        //调用toString()
        String s4 = s3.toString();           //com.heima.d3_object.demo1.Student@1b6d3586
        System.out.println(s4);
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值