java 重写的学习

本文全文转自:http://www.cnblogs.com/happyframework/p/3332243.html,非常感谢

Java中的重写规则比较灵活,具体如下:

  1. 除了 private 修饰之外的所有实例方法都可以重写,不需要显式的声明。
  2. 重写的方法为了显式的表达重写这一概念,使用 @Override进行注解。
  3. 重写的方法可以修改访问修饰符和返回类型,只要和父类的方法兼容(访问级别更高,返回类型更具体)。
  4. 可以使用final将某个方法标记为不可重写。
  5. 在构造方法中使用 super(xxx, xxx)调用父类构造方法,在常规实例方法中使用 super.method(xxx, xxx)调用父类方法。
  6. 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";
}
}

  

posted @ 2015-08-11 23:35  平常心,平常心  阅读(217)  评论(0编辑  收藏  举报