接口的实现类是工具类;
把接口作为成员变量类型的类是主导类;
注:
1、在主函数类中创建工具类对象,而不是在主导类中创建工具类对象;
2、在主导类中将接口类型作为成员变量类型,而不是将接口实现类类型作为成员变量类型;
1、接口、作为成员变量类型
public interface Skill {
public abstract void show();
}
2、接口的实现类、工具类、工具类不作成员变量类型、工具类其父类接口作为成员变量类型
public class Sports implements Skill {
@Override
public void show() {
System.out.println("play basketball");
}
}
3、主导类、在主导类中使用工具类的抽象方法、在主导类中不创捷工具类对象
主导类中,当然可以把接口作为成员变量类型,也可以把接口的实现类作为成员变量类型,只要在主函数合理创建对象即可。
public class Person {
private String name;
private int age;
// 工具类的父类接口作成员变量类型
private Skill skill;
public Person(String name, int age, Skill skill) {
this.name = name;
this.age = age;
this.skill = skill;
}
public void introcuce(){
System.out.println("my name is " + this.name + " and my age is " + this.age);
this.skill.show();
}
}
4、测试、在主函数中创建工具类对象
public class test {
public static void main(String[] args) {
// 在主函数给主导类配置工具类
Skill sportsSkill = new Sports();
Person p = new Person("陈志海",24,sportsSkill);
p.introcuce();
}
}