本帖最后由 shenqi 于 2013-5-6 17:56 编辑
覆盖也称为重写(override),是指子类的方法覆盖父类的方法,首先来看下代码: class SuperClass{ public void eat(String s){ System.out.println("吃饭"); } } class ChildClass extends SuperClass{ @Override public void eat(String s) { System.out.println("吃面"); } } 这是一个简单的子类重写父类的方法.来看下有什么注意事项: 首先把一个方法分为5个部分 : ①public ②void ③eat(④String ⑤s) ① 在子类重写方法时修饰符必须比父类的大. a) 例如: class SuperClass{ protected void eat(String s){ System.out.println("吃饭"); } } class ChildClass extends SuperClass{ @Override public void eat(String s) { System.out.println("吃面"); } } b) 切忌不可反过来,例如: class SuperClass{ ×public void eat(String s){ System.out.println("吃饭"); } } class ChildClass extends SuperClass{ @Override ×private void eat(String s) { System.out.println("吃面"); } } 这样的写法是错的! 也就是说子类不可以缩小父类的修饰符的权限.权限的大小:private < protected < public,假如父类中没有修饰符,那子类在重写时也不能带修饰符.\ ② 返回值:必须和父类一摸一样,否则编译不通过. ③ 方法名:必须和父类一摸一样,否则编译不通过. ④ 局部变量类型:必须和父类一摸一样,否则编译不通过. ⑤ 局部变量名:可以随意写,不用和父类相同也可以. 补充:对于一个类是否重写了父类的方法,可以使用@Override在定义在方法名上,检查方法是否重写了,如果没有则编译时就报错减少排错的工作.@这种格式开头的称为注解.详细知识可以参考张孝祥老师的Java高薪技术. |