接口组装案例
需要注意的是:在实现接口中的方法的时候,接口的实现类中的重写方法 的修饰符必须是public,(以为接口中的方法默认的是public,而在类中,方法的默认访问权限是default,default的权限是在包内访问,其访问权限小于public,但是实现类的方法的访问权限不能低于其父类或者其父接口的相应方法的访问权限,所以程序是会报错的)
//创建测试类
public class PersonPullDoorExample {
public static void main(String[] args) {
Scene s=new Scene();
s.action();
}
}
//抽象父类---DOOR
abstract class Door{
abstract void open();
}
class Door1 extends Door{
public void open(){
System.out.print("推拉门");
}
}
class Door2 extends Door{
public void open(){
System.out.print("普通门");
}
}
interface PullWay{
void pull(Door door);
}
class PullWay1 implements PullWay{
public void pull(Door door){
System.out.print("单手拉");
door.open();
}
}
class PullWay2 implements PullWay{
public void pull(Door door){
System.out.print("双手拉");
door.open();
}
}
//抽象父类---Person
abstract class Person{
abstract void openDoor(PullWay pullway,Door door);
}
class Man extends Person{
public void openDoor(PullWay pullWay,Door door){
System.out.print("男人");
pullWay.pull(door);
}
}
class Women extends Person{
public void openDoor(PullWay pullway,Door door){
System.out.print("女人");
pullway.pull(door);
}
}
//创建场景类来实现具体的操作
class Scene {
public void action(){
Person person=new Women();
PullWay pullWay=new PullWay1();
Door door=new Door1();
person.openDoor(pullWay,door);
}
}