准备工作
jar包 将以下这些包导入到项目中(包的作用及环境搭建参考Spring的简单环境配置)
commons-logging-1.2.jar
spring-aop-4.3.9.RELEASE.jar
spring-beans-4.3.9.RELEASE.jar
spring-context-4.3.9.RELEASE.jar
spring-core-4.3.9.RELEASE.jar
spring-expression-4.3.9.RELEASE.jar
1.配置applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- 给接口实现类依赖注入 -->
<bean id="java" class="com.zy.interfaces.Impl.JavaLearn"></bean>
<bean id="html" class="com.zy.interfaces.Impl.HtmlLearn"></bean>
</beans>
2.创建Student.java类
这里的Student类因为没有属性,只写一个learnCourse()方法即可
package com.zy.pojo;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.zy.interfaces.Course;
public class Student {
public void learnCourse(String courseName){
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
Course course = (Course) ac.getBean(courseName);
course.learn();
}
}
3.创建Course.java接口
package com.zy.interfaces;
public interface Course {
void learn();
}
4.实现接口
HtmlLearn.java实现类
package com.zy.interfaces.Impl;
import com.zy.interfaces.Course;
public class HtmlLearn implements Course{
@Override
public void learn() {
System.out.println("学习Html!!!");
}
}
JavaLearn.java实现类
package com.zy.interfaces.Impl;
import com.zy.interfaces.Course;
public class JavaLearn implements Course{
@Override
public void learn() {
System.out.println("学习Java!!!");
}
}
5.创建StudentTest.java测试类
package com.zy.test;
import java.applet.AppletContext;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.zy.pojo.Student;
import com.zy.pojo.StudentAddress;
import com.zy.pojo.TypeOfSetValue;
public class StudentTest {
public static void main(String[] args) {
studentCourse();
}
// 通过接口,根据传入的参数不同调用接口的不同实现类,实现多态
private static void studentCourse() {
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
Student student = (Student) ac.getBean("student");
student.learnCourse("html");
student.learnCourse("java");
}
}
6.项目结构
红色方框为所用到的类,其他不用管
7.运行结果
分析一下:
- 通过applicationContext.xml配置将接口的实现类由bean依赖起来,传入不同的课程名称可以调用不同实现类的接口方法,从而实现简单的多态