重写关键:父类方法与子类方法之间:外壳不变,核心重写
重写规则 : 两同两小一大
两同:方法名、参数类型相同(返回值类型可以不同);
两小:子类返回类型小于等于父类方法返回类型,
子类抛出异常小于等于父类方法抛出异常(子类抛出的异常必须是父类同样的异常或父类的子类);
一大:子类访问权限大于等于父类方法访问权限;(如果父类的一个方法被声明为 public,那么在子类中重写该方法就不能声明为 protected)。
构造方法不能被重写。
声明为 final 的方法不能被重写。
声明为 static 的方法不能被重写,但是能够被再次声明。
java编译时多态:方法重载(方法名一样,参数列表不一样)
编译时多态:int+int, int+double,double+double都可以用同样的Add()方法名,根据传参的不同,系统自动调用不同的重载方法
java运行时多态:父类引用指向子类对象,方法重写
运行时多态体现:使用父类引用指向子类对象,再调用某一父类中的方法时,不同子类会表现出不同结果。 这样的作用就是扩展性极好,玩过网游的话应该知道 游戏中有不同的角色,它们都有一个父类,它们做相同动作时表现出来的效果就会不一样,比如跑,魔法师的跑跟战士的跑就不会一样,这就是俩者都覆盖了父类中的跑方法,各自有自己的现实,表现出来多态。 如果有一天你想再加个角色,只用再写一个类继承该父类,覆盖其中的跑方法就行了,其他代码不用怎么改,所以可维护性也很好。