定义-重写、重载
重写:在同一个类中,多个函数或者方法有相同的名称,但是函数的参数列表不同,这样的同名不同参数的函数或者方法,互相称之为重载函数或者重载方法。
重载:在java的子类与父类中,有两个名称和参数列表都相同的方法,由于他们具有相同的方法签名,所以子类中的新方法将覆盖父类中原有的方法。
代码示例
重载例子
class Dog {
public void bark() {
System.out.println("woof");
}
//重载
public void bark(int num) {
System.out.println("woof1");
}
}
重写例子
class Dog {
public void bark() {
System.out.println("woof");
}
}
class Hound extends Dog {
public void sniff() {
System.out.println("sniff");
}
//重写
public void bark() {
System.out.println("重写bark方法");
}
}
区别
名称 | 范围 | 方法名 | 形参列表 | 返回类型 | 修饰符 |
---|---|---|---|---|---|
重载 | 本类 | 必须一样 | 参数类型、个数或者顺序至少有一个不同 | 可以改变返回类型 | 可以改变修饰符 |
重写 | 父类和子类 | 必须一样 | 必须相同 | 子类的返回类型和父类返回的类型一致或者是其子类 | 子类方法不能缩小父类的方法访问范围 |
说到重写的访问范围,这里顺便介绍一下各个修饰符的访问范围
访问级别 | 访问控制修饰符 | 同类 | 同包 | 子类 | 不同包 |
---|---|---|---|---|---|
公开 | public | ✓ | ✓ | ✓ | ✓ |
受保护 | protected | ✓ | ✓ | ✓ | × |
默认 | 没有修饰符 | ✓ | ✓ | × | × |
私有 | private | ✓ | × | × | × |
最后我也想告诉大家,以及告诫自己,双非并不是自己进不了大厂的借口,或许只是缺乏逼自己一把的勇气吧。少研究别人,多提升自己,不是成功来的慢,而是自己努力的不够狠,努力只能及格,拼命才能优秀。加油吧!