Title

方法重写

方法重写

重写

  • 需要有继承关系,子类只能重写父类的方法!
  1. 方法名必须相同

  2. 参数列表必须相同

  3. 修饰符:范围可以扩大但是不可以缩小 public >Protected>Default>private

  4. 抛出的异常:范围,可以被缩小但是不能被扩大:ClassNotFoundException --> Exception(大)

    重写:子类的方法和父类必须一致:方法体不同

为什么需要重写:

  1. 父类的功能,子类并不一定都需要,或者不够满足

    快捷键:Alt + Inser

=============================================================================

代码演示---父类B

package com.tea.Demo05;

//重写是方法的重写,与属性无关
public class B {

    public void test(){
        System.out.println("B=>test()");
    }

}


//    public static void test(){
//        System.out.println("B=>test()");
//    }

代码演示---子类A

package com.tea.Demo05;

//继承关系
public class A extends B{

    //Override 重写
    @Override
    public void test() {
        System.out.println("A=>test()");
    }
}

//    public static void test(){
//        System.out.println("A=>test()");
//    }

代码演示---测试类

package com.tea.Demo05;

public class Application {

    //静态的方法与非静态的方法区别很大
    //静态方法: 方法的调用只和左边,即定义的数据类型有关
    //非静态方法: 才可以重写
    public static void main(String[] args) {

        //方法的调用只和左边,即定义的数据类型有关
        A a = new A();
        a.test();  //A=>test()

        //父类的引用指向子类
        B b = new A();
        b.test();  //A=>test()
    }
}

=============================================================================

重写的注意事项

1. 当A类与B类中是静态方法时,测试类的运行结果会表明

【静态方法: 方法的调用只和左边,即定义的数据类型有关】

2. 当A类与B类中是非静态方法时,测试类的运行结果会表明

【非静态方法可以重写】

=============================================================================

posted @ 2022-10-01 18:49  花里胡哨的渣渣  阅读(10)  评论(0)    收藏  举报