【二三方】_Spring容器优先调用子类的方法

Spring容器优先调用子类的方法

  • 将一个类放入Spring容器中,获取该bean并执行其方法,当该类中和父类都实现了该方法时,优先调用子类中的方法,如果子类没有重写父类中的方法,则调用父类中的该方法。

  • 1.创建一个接口:

    1
    2
    3
    4
    5
    public interface HahaService {
    void sayHi1();

    void sayHi2();
    }
  • 2.创建抽象类,并在其中实现这两个抽象方法:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public abstract class AbstractHahaService implements HahaService {
    @Override
    public void sayHi1() {
    System.out.println("抽象类中执行方法1!");
    }

    @Override
    public void sayHi2() {
    System.out.println("抽象类中执行方法2!");
    }
    }
  • 3.创建实现类,在其中重写一个方法,并将其注入Spring容器中:

    1
    2
    3
    4
    5
    6
    7
    @Component
    public class HahaServiceImpl extends AbstractHahaService{
    @Override
    public void sayHi1() {
    System.out.println("实现类中执行方法1!");
    }
    }
  • 4.根据接口名HahaService获取Spring中的bean对象,执行这两个方法,可以发现sayHi1方法优先执行了子类中的方法,而sayHi2方法执行了父类中的方法:

    1
    2
    实现类中执行方法1!
    抽象类中执行方法2!