1、任何动物都有吃的方法,与玩的方法,那么每个动物具体吃啥,是不是应该区分一下?
当前子类,可以确定自己具体的方法,那么久需要将方法进行重写操作。子类如果重写了父类的方法,那么在运行过程中,就会调用自己重写的方法。比如:猫狗都有吃饭的方法,那么具体吃什么,他们自己决定。
2、方法的重写需要注意:
a、必须有子父类的关系存在。
b、方法的重写必须方法名称,返回值,方法的访问修饰一模一样。
c、方法的重写:子类可以优化父类的方法,王健林一年挣1亿。王思聪重写赚钱方法,超越了父亲,一年可以赚2亿。
动物对象:父类的方法
猫对象:子类的方法
d、方法的重写非常容易出现错误,系统给我们提供了一个帮助:@override
e、为什么要有方法的重写:父类说白了就是规定一些工作与功能的,人都有吃饭的方法,也都有工作的方法,等等之类的。。那么具体的每个人,父类是不是就不用做具体的操作?父类只是做一个规范,整合。具体的操作,其实都可以使用子类自己完成。
3、方法的重载:
方法的重载,必须在自己对象中完成,当前方法名,方法类型,返回值等都必须一致。但是小括号内的数据,参数不能一致,必须区分开来。
方法的重载,在当前对象中,可以定义多个一样的方法,但是小括号内,必须区分,因为方法的重载区分方法就是依靠小括号自己。
当前多个方法,通过类型区分,或者数量区分。
当前构造方法中,其实就是使用的方法重载
4.父类中有睡觉,吃东西,玩游戏的方法,子类继承之后就可以调用 这些方法,但是方法里面具体的实现步骤不同,,这时候子类调用方法,在方法里面写一些具体的操作,这就是方法的重写,
父类
public class Father'{
//父类里面并没有写具体操作
//休息方法
public void sleep() {
}
//喂食方法
public void eat() {
}
//玩耍方法
public void play() {
}
}
子类
public class Son extends Father{
@Override
public void sleep() {
System.out.println("儿子正在睡觉");
}
@Override
public void eat() {
System.out.println("儿子正在吃饭");
}
//方法的重载
public void eat(String name) {
System.out.println(name+"正在吃饭");
}
}
5.某些构造方法中,其实就是使用的方法重载
重写与重载的区分
1.定义不同:重载是定义相同的方法名,参数不同;重写是子类重写父类的方法。
2.范围不同:重载是在一个类中,重写是子类与父类之间的。
3.多态不同:重载是编译时的多态性,重写是运行时的多态性。
4.返回不同:重载对返回类型没有要求,而重写要求返回类型,有兼容的返回类型。
5.参数不同:重载的参数个数、参数类型、参数顺序可以不同,而重写父子方法参数必须相同。
6.修饰不同:重载对访问修饰没有特殊要求,重写访问修饰符的限制一定要大于被重写方法的访问修饰符。