下面给大家演示一个利用内部类实现接口的小案例:
一.案例分析,
创建一个Student类对象,有一个study方法;
创建一个Teacher类对象,有一个teach方法;
创建一个School类对象,实现A老师,B老师与A班学生,B班学生的teach方法与study方法的自由组合。
package t1;
//创建学生类的接口
interface Student{
//待实现方法study()
void study();
}
//创建老师类的接口
interface Teacher{
//待实现方法teach()
void teach();
}
class School{
//在 teachers方法中利用实现Teacher类接口
public Teacher teachers(int a){//通过传入参数来选择老师
class TeacherA implements Teacher{
public void teach(){
System.out.println("TeacherA");
}
}
class TeacherB implements Teacher{
public void teach(){
System.out.println("TeacherB");
}
}
if(a % 2 == 0) return new TeacherA();
else return new TeacherB();
}
//在 students方法中利用返回实现Student类接口
public Student students(int s){//通过传入参数来选择学生
class StudentA implements Student{
public void study(){
System.out.println("StudentA");
}
}
class StudentB implements Student{
public void study(){
System.out.println("StudentB");
}
}
if(s % 2 == 0) return new StudentA();
else return new StudentB();
}
}
public class Teach{
public static void main(String[] args){
//利用多态来建立老师类的对象
Teacher t = new School().teachers(1);
t.teach();
//利用多态来建立学生类的对象
Student s = new School().students(0);
s.study();
}
}
可以看到,这样做的最大好处就是将Teacher类与Student类完全分离,我们只需要在用到的时候分别去调取就可以了。