Java面向对象之子类方法重写

重写的总结

  1. 需要有继承关系,子类重写父类
  2. 方法名必须相同,方法体可以不同
  3. 参数列表必须相同
  4. 静态方法是类的方法,非静态是对象的方法,只有非静态方法才能被重写
  5. 修饰符:范围可以扩大不能缩小 Public>Protected>Default>private
  6. 抛出的异常:范围。可以被缩小,但不能扩大:ClassNotFoundException -->Exception(大)

为什么需要重写

  1. 父类的功能,子类不一定需要,或者不一定满足
  2. 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();
    }
}

输出结果:
在这里插入图片描述