Java第6章-接口与多态实验2(小狗的状态)

实验目的:

面向接口编程的思想,所为面向接口编程,就是设计某种重要的类时,不让该类面向具体的类,而是面向接口,即所设计类中的重要数据是接口声明的变量而不是具体类声明的对象。

Dog.java

public class Dog {
    DogState state;//声明接口的变量
     public void cry(){
        state.showstate();//调用接口里面的函数
    }
    public void setstste(DogState s){
        state=s;
    }
}

DogState.java

public interface DogState {
   public abstract void showstate();
}

MeetEnemyState.java

public class MeetEnemyState implements DogState{//实现接口的类

    @Override
    public void showstate() {
         System.out.println("遇到敌人狂叫!");
    }
    
}

MeetFriendState.java

public class MeetFriendState implements DogState{//实现接口的类

    @Override
    public void showstate() {
        System.out.println("遇到朋友晃动尾巴表示欢迎!");
    }
    
}

softstate.java

public class softlystate implements DogState{//实现接口的类

    @Override
    public void showstate() {
        System.out.println("在主人面前听主人的话!");
    }
    
}

Test,java

public class Test {
    public static void main(String[]args){
        Dog Aqi=new Dog();
        Aqi.setstste(new softlystate());//设置它的状态
        Aqi.cry();//通过dog类里面的方法调用接口里面的showstate();
        Aqi.setstste(new MeetEnemyState());
        Aqi.cry();
        Aqi.setstste(new MeetFriendState());
        Aqi.cry();
        
    }
}

运行结果:


Java第6章-接口与多态实验2(小狗的状态)_第1张图片

Java第6章-接口与多态实验2(小狗的状态)_第2张图片








总结:

实现接口的类必须具体实现接口内的方法,以便定义接口变量时,可根据不同的传参,实现接口里面的方法。

你可能感兴趣的:(Java第6章-接口与多态实验2(小狗的状态))