about Me
欢迎各位读者访问,大家一起学习。
优秀是一种习惯♡♡♡
做更好的自己!
本人见识有限,写到博客难免有错误或疏忽的地方,还望各位大佬多多指点,在此表示感激不尽。♡♡♡
一:重写【override】 1. 什么是重写?
重写是子类对父类允许访问的方法进行重写编写,返回值和形参不变。巧记:外壳不变,核心重写。
public class Animal {
public void eat(){
System.out.println("吃");
}
}
class Dog extends Animal{
@Override//方法重写
public void eat() {
System.out.println("狗吃肉");
}
}
2. 思考代码
-
例子:思考下面这个程序执行结果☟☟☟
class Animal{ public void eat(){ System.out.println("动物可以吃"); } } class Dog extends Animal{ public void eat(){ System.out.println("狗可以吃"); } public void bark(){ System.out.println("狗可以叫"); } } public class TestDog{ public static void main(String args[]){ Animal a = new Animal(); // Animal 对象 Animal b = new Dog(); // Dog 对象 a.move();// 执行 Animal 类的方法 b.move();//执行 Dog 类的方法 b.bark(); } }执行结果:结果会抛出一个编译报错,因为b的引用类型没有bark方法。核心:编译看左,运行看右。
- 参数列表必须完全相同
参数列表必须要和被重写的参数列表完全相同,外壳不变,核心重写
- 方法名必须完全相同
重写的方法名必须要和被重写的方法名完全相同,外壳不变,核心重写
- 返回值必须完全相同
重写的方法返回值必须要和被重写的方法返回值一致。
- 子类访问权限不能低于父类访问权限
子类重写父类的方法时访问权限不能低于父类的访问权限,例如:父类使用public修饰,子类不能使用protected。
- 声明final的方法不能被重写
父类中的方法如果使用final关键字,子类继承父类的时候就不能重写。
- 声明static的方法不能被重写
如果父类中的方法使用static关键字,则子类不能重写父类的方法。
- 使用private修饰的方法不能被重写
父类中如果使用private修饰后,子类不能重写父类的方法。
- 构造方法不能被重写
因为构造方法都不能被继承,所以父类中的构造方法不能被子类重写。
- 不继承的类不能重写方法
如果一个类没有被继承,则这个类的方法不能被重写。
-
子类中如果想要使用父类的方法,就需要使用super关键字调用父类的方法。
举例:
class Animal{ public void move(){ System.out.println("动物可以移动"); } } class Dog extends Animal{ public void move(){ super.move(); // 使用super关键字,调用父类中的move方法 System.out.println("狗可以跑和走"); } } public class TestDog{ public static void main(String args[]){ Animal b = new Dog(); // Dog 对象 b.move(); //执行Dog类的方法 } }运行结果:动物可以移动 狗可以跑和走
重载是在一个类中,方法名相同,参数列表不同,于返回值没有关系。巧记:名同,参不同。
public void method() {
System.out.println("这是第一个方法");
}
//方法名相同,参数列表不同,与返回值无关
public int method(int a) {
return a;
}
2. 重载规则:
- 被重载的方法必须改变参数列表【个数,类型】
被重载的方法的参数列表必须要不同,具有独一无二性。不同体现在个数,类型,顺序等。
- 被重载的方法返回值可以不同
被重载的方法的返回值可以不相同,可以改变返回值类型。
- 被重载的方法可以改变访问权限修饰符
被重载的方法修饰符可以是private,protected,public,重载和方法修饰符无关。
| 区别点 | 重写方法 | 重载方法 |
|---|---|---|
| 权限修饰符 | 有约束 | 可以修改 |
| 返回值 | 必须相同 | 可以修改 |
| 方法名 | 必须相同 | 必须相同 |
| 参数列表 | 必须相同 | 必须修改 |
方法的重载overload和重写override都是多态性的不同表现
- 重写可以理解是父类和子类之间多态性的一种表现
- 重载可以理解为是一个类中多态性的具体表现形式
- 重写是在子类继承父类时,子类重写父类的方法,重写时返回值类型和方法名和参数列表必须和父类中完全相同且独一无二,这就是方法的重写。可以理解为 外壳相同 ,核心重写。
- 重载时在一个类中,有很多方法名相同,参数列表必须不同,这个不同不仅体现在参数数量上的不同,还有类型,顺序不同。这个称为方法的重载。可以理解为 名同 ,参不同。
不要在最能吃苦的年纪选择了安逸!!! — Tornado♥



