重载和重写
java三大特征
java这种面向对象的语言,有三大特征:封装,继承,多态
多态
定义
定义:多态是同一个行为具有多个不同表现形式或形态的能力
例如:大多数动物会叫, 则大多数动物比作抽象类;
狗会叫,则狗为实现类;
猫也会叫,则猫也为实现类;
多态实现的必要条件
- 子类必须继承父类
- 必须有重写
- 父类引用指向子类对象
多态的实现途径
重写,重载,接口实现
一. 重写(Override)
1.父类与子类之间的多态的关系,对父类的函数进行重新定义。
如果在子类中定义的某些方法和父类有相同的名称和参数,
那么该方法就被重写了。
方法的重写体现在子父类当中,最典型的是子类重写父类中的方法.
public class Father{
public void walk(){
System.out.println("我是父类");
}
}
//方法重写
public class Son extends Father{
@Override//方法重写
public void walk(){
System.out.println("我是子类");
}
}
2.方法重写又称为方法覆盖。 如果子类的方法与父类中的某一个方法具有相同的方法名、返回类型和参数列表,则新方法将覆盖原有方法。
3.子类方法的访问修饰权限不能小于父类的。
二.重载(Overload)
1.多个同名的方法同时存在,具有不同的参数/类型。重载是一个类中多态性的一种表现
2.重载的时候,方法名必须一样,但**参数类型和个数不一样,返回值类型可以一样也可以不一样**。我们不能以返回值类型作为重载方法的区分标准!!!如果参数类型和个数一样,返回值类型不同是不算重载的.
3.在调用方法时,通过传递给它们不同的参数个数和参数类型来决定去使用哪个对应的方法,这就是多态性
public void people(){
System.out.println("我是人");
}
//重载(Override)
public void people(String name){
System.out.println("我是人:"+name);
}
public void people(String name,int age){
System.out.println("我是人:"+name+"岁"+age);
}
注意:重写Override是父类与子类之间多态的关系,而重载Overload是一个类中多态性的表现。
三.总结
方法重载Overload:
1、同一个类中
2、方法名相同,参数列表不同(参数顺序、个数、类型)
3、方法返回值、访问修饰符任意
4、与方法的参数名无关
方法重写Override:
1、有继承关系的子类中
2、方法名相同,参数列表相同(参数顺序、个数、类型),方法返回值相同
3、访问修饰符,访问范围需要大于等于父类的访问范围
4、与方法的参数名无关