回顾java语言当中方法的重载,可以和构造函数(方法)这篇一起看。
-
1.方法重载又称为Overlord
-
2.方法重载什么时候使用?
当在同一个类当中,方法完成的功能是似的的,建议方法名相同,这
就像在调用一个方法似的。代码美观。 -
3.什么时候满足之后构成方法重载?
* 在同一个类当中
* 方法名相同
* 参数列表不同:类型、顺序、个数 -
4.方法重载和什么无关?
* 和方法的返回值类型无关
* 和方法的修饰符列表无关
*
关于java语言当中,方法的覆盖:
-
1.方法覆盖 又被称为方法重写,英语单词:override【官方】
-
2.什么时候使用方法重写?
当父类中的方法已近无法满足当前子类的业务需求。
子类有必要将父类中继承过来的方法进行重写,
这个重新缩写的过程称为方法重写/方法覆盖。 -
3.什么条件满足之后发生重写呢 ?【代码满足什么条件之后,构成方法
* 方法重写发送在具有继承关系的父子类之间
* 方法重写的时候:返回值类型相同,形参列表不同
* 方法重写的时候:访问权限不能更低,可以更高。publi
* 方法重写的时候:抛出异常不能更多,可以更少。 【以后讲】 -
4.建议方法重写的时候尽量使用软件自带的功能生成,不要编写,容易出
IDEA的快捷键,Ctrl + O -
5.注意:
私有方法不能继承,所以不能覆盖。
构造方法不能继承,所有不能覆盖。
静态方法不存在覆盖。【讲完多态之解释】
覆盖只针对方法,不谈属性。
测试类(OverrideTest01)
public class OverrideTest01 {
public static void main(String[] args) {
// 创建动物对象
Animal a = new Animal();
a.move();
// 创建猫科类动物对象
Cat c = new Cat();
c.move();
// 创建飞禽类动物对象
Bird b = new Bird();
b.move();
// 创建鹦鹉对象
YingWu y = new YingWu();
y.move();
}
}
动物类(Animal.class)
// 动物类
public class Animal {
// 动物都是可以移动的
public void move(){
System.out.println("动物在移动...");
}
}
飞禽类(Bird.class)
// 飞禽类
public class Bird extends Animal{
// 方法重写
public void move(){
System.out.println("鸟儿在飞翔...");
}
}
鹦鹉类(YingWu.class),这里的move方法覆盖的是Bird当中的move方法,而不是Animal中的move方法,可以用注释代码的形式进行测试。
public class YingWu extends Bird{
// 这里的move方法覆盖的是Bird当中的move方法
// 而不是Animal中的move,可以用注释代码的形式进行测试。
public void move(){
System.out.println("鹦鹉飞不起来!");
}
}
运行结果:
动物在移动...
猫在走猫步...
鸟儿在飞翔...
鹦鹉飞不起来!
注释掉鹦鹉类的move重写方法
运行结果:
动物在移动...
猫在走猫步...
鸟儿在飞翔...
鸟儿在飞翔...
你会发现最后一个输出的结果不是"动物在移动…", 而是"鸟儿在飞翔…",很明显的说明,鹦鹉类继承的是飞禽类的move方法。