重写的前提也必须是继承。废话不多说,直接上代码:
主方法:
package com.oop.demo06;
public class Demo {
public static void main(String[] args) {
A a = new A();
a.test();
// 父类引用的方法指向了子类
B b = new A();
b.test();
}
}
A类:
package com.oop.demo06;
public class A extends B{
//注解,有功能的注释,这个是重写的意思
public static void test() {
System.out.println("A");
}
}
B类:
package com.oop.demo06;
public class B {
public static void test(){
System.out.println("B");
}
}
一步一步来:
输出结果:
得出结论,在静态方法中,定义的方法只和左边,也就是定义的数据类型有关。
所以说,重写必须还要是非静态的方法。
我们把方法改成非静态:
这个时候再Alt+Insert就可以看到如重写如下图:
这个时候在输出结果:
说明A重写了B的方法了。
总结一下
重写:需要有继承关系,子类重写父类的方法!
1.方法名必须相同
2.参数列表列表必须相同
3.修饰符:范围可以扩大但不能缩小:pub1ic>Protected>Default>private
4.抛出的异常:范围,可以被缩小,但不能扩大;ClassNotFoundException --> Exception(大)
(标红是后面的知识)
重写,子类的方法和父类必要一致; 方法体不同!
为什么要重写?
父类的功能,子类不一定需要,或者不一定满足!|