Java 中的接口有什么作用?为什么不直接用类?

接口的作用对于很多新手来说很不容易理解,我给大家举个例子。
接口只是一个规范,所以里面的方法都是空的。
假如我开了一个宠物粮店,声明所有宠物都可以来我这里买粮食,这就相当于一个接口,

public interface PetRestaurant {

    public void buy();

}

当一只狗看到了,知道自己是宠物,所以它去实现这个接口

public class DogPet implements PetRestaurant {
@Override
    public void buy() {
        System.out.println("我是狗,我要买狗粮");
    }
}
当一只猫看到了,知道自己也是宠物,所以也去实现这个接口
public class CatPet implements PetRestaurant {
@Override
    public void buy() {
        System.out.println("我是猫,我要买猫粮");
    }

}
当狗和猫来我的店之前,我是不知道他们到底是什么,但是当他们来到我的店,我就知道一个要猫粮食,一个要狗粮食。因为他们都实现了 我这个接口,都可以买。下面这个类相当于一个接待顾客的类,即店小二,他接待所有实现了我这个宠物店接口的动物,传进来一个PetRestaurant 类型的宠物,注意,这个PetRestaurant 是接口
public class test {
    public void buy(PetRestaurant pet)
    {
        pet.buy();
    }
}

好了,这个时候我这个老板出现了,我可以给他们卖粮食了,相当于测试类
public class Tests {
    public static void main(String[] args) {
        PetRestaurant dog = new DogPet(); //实例化一个狗,相当于把狗顾客实例化
        PetRestaurant cat = new CatPet();//实例化一个猫,相当于把猫顾客实例化
        test t = new test(); //实例化一个店小二
        t.buy(cat); //把猫交给店小二
        t.buy(dog); //把狗交给店小二
    }
}


这样运行的结果就是
我是猫,我要买猫粮
我是狗,我要买狗娘

你知道吗,整个过程我这个店主其实根本不知道来的到底是猫是狗还是其他什么,我只要有一个店小二,把这些来的不知什么动物都全部交给店小二,店小二就知道怎么去卖了,因为这些狗啊猫啊都实现了我这个宠物店的接口,而店小二就负责接待所有实现了我这个接口的动物。这就有一个好处,假如明天来了一头小猪,只要它实现了我这个接口,我只管交给店小二处理就OK了,我这个店小二根本不需要变化,我这个店主也只需要实例化一下这个动物就OK
你想,假如没有接口,会怎么办,来一个猫,我要去创造一个猫,还要实例化,来一只狗,我要创建一只狗,同样要实例化,还要配备专门的店小二去接待,就会相当麻烦

练习

1、首先启动电脑上的Eclipse,依次选择File→New→Project。在弹出的Select a wizard窗口中,选择Java Project 后点击下一步。

2、输入项目名称后点击下一步(名称命名可以任意,但是要注意符合命名规范)、

3、鼠标右击新建的项目,依次选择New→Package,在package name里面输入自己想取的名字后点击next

4、鼠标右击包,依次选择New→ Interface,创建一个接口

5、将接口命名为ShoutAbility后,点击完成。

6、定义接口shout()方法,并按下Ctrl +S 保存,经常保存是一个良好的习惯。

7、右击包,依次选择New→Class,并将类命名为AoShout。

8、将AoShout 实现ShoutAbility接口,并且要实现接口里面的shout方法,实现接口的关键字为 implements。按下Ctrl+S 保存。

9、创建一个Bird类,并定义一个带参构造方法,实例化上面定义的接口。定义Bird 的 shout() 方法时,即可用接口变量调用接口方法。按下Ctrl +S 保存。

10、创建一个测试类,用接口的实现类AoShout创建一个接口对象,再用创建的bridShout对象创建一个鸟对象。这时候调用鸟类的方法,就会执行调用到接口的方法,通过接口找到实现类的方法嗷嗷叫。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代码敲上天.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值