Java面向对象之子类方法重写
重写的总结
- 需要有继承关系,子类重写父类
- 方法名必须相同,方法体可以不同
- 参数列表必须相同
- 静态方法是类的方法,非静态是对象的方法,只有非静态方法才能被重写
- 修饰符:范围可以扩大不能缩小 Public>Protected>Default>private
- 抛出的异常:范围。可以被缩小,但不能扩大:ClassNotFoundException -->Exception(大)
为什么需要重写
- 父类的功能,子类不一定需要,或者不一定满足
- Alt+Insert:快速呼出override
A类:
package demo06;
public class A extends B{
public static void test(){
System.out.println("A=>test()");
}
//override:重写
//重写的方法只能是public
@Override//注解:有功能的注释
public void Test() {
super.Test();
}
}
B类:
package demo06;
public class B {
public static void test(){
System.out.println("B=>test");
}
public void Test(){
System.out.println("B=>Test()");
}
}
主函数:
package demo06;
public class Application {
public static void main(String[] args) {
//静态方法是类的方法
//b调用了B类的方法,因为b是用b类定义的
//方法的调用只和左边,定义的数据类型有关
A a = new A();
a.test();
//B父类的引用指向了子类
B b = new A();
b.test();
System.out.println("==============");
//非静态是对象的方法
//b1调用的是对象的方法,而b1是用A类new的
A a1 = new A();
a.Test();
//B父类的引用指向了子类
B b1 = new A();//子类重写了父类的方法
b.Test();
}
}
输出结果:
