obtainFreshBeanFactory()方法的调用问题

//AbstractApplicationContext类
protected ConfigurableListableBeanFactory obtainFreshBeanFactory() {
    		refreshBeanFactory(); //在父类中,真正实现在子类
    		return getBeanFactory();
    	}

}
		

上述代码refreshBeanFactory();方法调用的是子类的

//AbstractRefreshableApplicationContext 子类类中的方法
    	protected final void refreshBeanFactory() throws BeansException {
    		if (hasBeanFactory()) {
    			destroyBeans();
    			closeBeanFactory();
    		}
    		try {
    			DefaultListableBeanFactory beanFactory = createBeanFactory();
    			beanFactory.setSerializationId(getId());
    			customizeBeanFactory(beanFactory);
    			loadBeanDefinitions(beanFactory);
    			this.beanFactory = beanFactory;
    		}
    		catch (IOException ex) {
    			throw new ApplicationContextException("I/O error parsing bean definition source for " + getDisplayName(), ex);
    		}
    	}

 

子类继承父类,按理说,父类不应该调用子类的方法呀?

为什么会出现父类调用子类的情况?

人家父类直接给了一抽象方法在这,