本文全文转自:http://www.cnblogs.com/happyframework/p/3332243.html,非常感谢
Java中的重写规则比较灵活,具体如下:
- 除了 private 修饰之外的所有实例方法都可以重写,不需要显式的声明。
- 重写的方法为了显式的表达重写这一概念,使用 @Override进行注解。
- 重写的方法可以修改访问修饰符和返回类型,只要和父类的方法兼容(访问级别更高,返回类型更具体)。
- 可以使用final将某个方法标记为不可重写。
- 在构造方法中使用 super(xxx, xxx)调用父类构造方法,在常规实例方法中使用 super.method(xxx, xxx)调用父类方法。
- Java不支持覆盖(new)。
public class test { /** * @param args */ public static void main(String[] args) { Animal animal = new Animal(); Animal dog = new Dog(); animal.say(); dog.say(); animal.eat(animal); dog.eat(dog); System.out.println(animal.info()); System.out.println(dog.info()); } } class Animal { private String name = "Animal"; protected void say() { System.out.println("Animal" + " " + this.name); } public void eat(Animal food) { System.out.println("Animal eat " + food); } public Object info() { return "Animal"; } @Override public String toString() { return "Animal"; } } class Dog extends Animal { private String name = "Dog"; @Override public final void say() { System.out.println("Dog" + " " + this.name); } @Override public final void eat(Animal food) { super.eat(food); System.out.println("Dog eated"); } @Override public final String info() { return "Dog"; } @Override public final String toString() { return "Dog"; } }