重写(Override)(需要有继承关系,子类重写父类的方法)
- 方法名必须相同
- 参数列表必须相同
- 修饰符:范围可以扩大但不能缩小:
public > Protected > Default > private - 抛出的异常:范围可以被缩小,但不能扩大;
- 子类的方法和父类的方法必须一致,方法体不同!
为什么需要重写:
- 父类的功能,子类不一定需要,或者不一定满足。
参考代码:
//父类
//重写都是方法的重写,和属性无关
public class Demo09B {
public void test() {
System.out.println("Demo09B=>test()");
}
}
/*
//子类
public class Demo09A extends Demo09B {
//此段不能是静态的否则报错,因为@Override是有功能的
@Override //注释:有功能的注释!
public void test() {
System.out.println("Demo09A=>test()");
}
//此段子类和父类都可为静态的
/*public void test() {
System.out.println("Demo09A=>test()");
}*/
}
*/
/*
//main方法
public class Demo09Application {
//静态方法和非静态方法的方法区别很大
//方法的调用只和左边、定义的数据类型有关
//非静态可以重写
public static void main(String[] args) {
Demo09A da = new Demo09A();
da.test(); //Demo09A类的方法
//父类的引用指向了子类
Demo09B db = new Demo09A(); //子类重写了父类的方法(和非静态有关)
//重写后为Demo09A类的方法
db.test(); //Demo09B类的方法
}
}
*/