重载和重写的定义与区别

重载和重写的定义

重载是在同一个类中定义多个同名的方法,但每个方法中的有不同的参数,或者参数的个数不同。java会通过编译器匹配方法,如果找不到参数匹配的方法,或者多个相同的参数的方法,就会产生编译错误。
下面给出一个例子

public class Teacher {
    private String name;//姓名
    private int old;//年龄
    private String job;//职称

    //构造函数
    Teacher(){

    }
    //构造函数
    public Teacher(String name, int old, String job) {
        this.name = name;
        this.old = old;
        this.job = job;
    }

    public void show(){
        System.out.println("姓名:"+name);
        System.out.println("年龄:"+old);
        System.out.println("职称:"+job);
    }
    public void show( String classroom){//重载show方法
        System.out.println("姓名:"+name);
        System.out.println("年龄:"+old);
        System.out.println("职称:"+job);
        System.out.println("班级:"+classroom);
    }

    public static void main(String[] args) {
        Teacher t=new Teacher("小王",30,"班主任");
        t.show();
        t.show("A1912");
    }
}

前面的shouw()的结果,后面是show(String classroom)的结果
分别是show()和show()在这里插入图片描述

重写的定义

java中所有的类都来自java.lang.Object ,在java中重写是一个很重要的思路,重写是指方法名,和形参都不会改变,重写是因为原有的函数不符合自身的需求时,所以需要重写方法来满足自己的要求。
下面给出例子
在java中有个toString()方法,还是上面的类。我们将 t.show(); t.show(“A1912”); 注释掉。

package 第二章.重写和重载的区别;

public class Teacher {
    private String name;//姓名
    private int old;//年龄
    private String job;//职称

    //构造函数
    Teacher(){

    }
    //构造函数
    public Teacher(String name, int old, String job) {
        this.name = name;
        this.old = old;
        this.job = job;
    }

    public void show(){
        System.out.println("姓名:"+name);
        System.out.println("年龄:"+old);
        System.out.println("职称:"+job);
    }
    public void show( String classroom){//重载show方法
        System.out.println("姓名:"+name);
        System.out.println("年龄:"+old);
        System.out.println("职称:"+job);
        System.out.println("班级:"+classroom);
    }

    @Override//注解
    public String toString() {
        return super.toString();
    }

    public static void main(String[] args) {
        Teacher t=new Teacher("小王",30,"班主任");
        //t.show();
        //t.show("A1912");
        System.out.println(""+t);
    }
}

得到的答案是
在这里插入图片描述
很明显不是我们要的答案我们想显示出和类成员不一样。所以我们需要重写toString()方法。

@Override//注解
    public String toString() {
        return String.format("姓名:%s\n年龄:%d\n 职称:%s",name,old,job);//格式化输出
    }

再次运行就可以得到我们想要的答案了。
在这里插入图片描述

重写重载
方法中的参数,返回值类型,方法名都不可以改变方法中的参数不同或参数的个数不同,返回值类型,方法名都不可以改变

PS:
toString()是返回对象的字符串形式,在java的帮助文档中写到建议所有的子类使用时重写该方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值