从头认识java-7.4 实现多重接口

这一章节我们来说一下接口另一个特性:多重接口。

在平常,使用继承,我们只是继承某一类,只能够一种向上转型,但是在接口的使用方面,可以实现多个接口,然后实现多种的向上转型。

我们先上代码:

package com.ray.ch07;

public class Test {

	public static void testSwim(CanSwim canSwim) {
		canSwim.swim();
	}

	public static void testEat(CanEat canEat) {
		canEat.eat();
	}

	public static void testRun(CanRun canRun) {
		canRun.run();
	}

	public static void main(String[] args) {
		Person person = new Person();
		testSwim(person);//向上转型为CanSwim
		testEat(person);//向上转型为CanEat
		testRun(person);//向上转型为CanRun
		Fish fish = new Fish();
		testSwim(fish);//
		// testEat(fish);//error,因为没有实现接口,不能向上转型
		// testRun(fish);//error,因为没有实现接口,不能向上转型
	}
}

interface CanRun {
	void run();
}

interface CanSwim {
	void swim();
}

interface CanEat {
	void eat();
}

class Person implements CanEat, CanRun, CanSwim {

	@Override
	public void swim() {
		System.out.println("i can swim");
	}

	@Override
	public void run() {
		System.out.println("i can run");
	}

	@Override
	public void eat() {
		System.out.println("i can eat");
	}

}

class Fish implements CanSwim {

	@Override
	public void swim() {
		System.out.println("i can swim");
	}
}


解释一下上面的代码:

1.建立了三个接口:会游泳,会跑,会吃

2.建立一个Person类,实现上面三个接口

3.建立一个Fish类,只是实现游泳的接口

4.然后在测试代码里面使用策略设计模式,测试一下三种技能

在代码里,Person 分别向上转型为CanRun、CanSwim、CanEat这三种类型,这样大大增强代码的灵活性,要不然我们就必须在测试代码方面增加代码,才能够完整测试。而且也不利于代码的复用,假如CanSwim这个不是接口,他变成了基类,但是他的实现可能对于Person或者Fish来说都是不合适的,而且代码可能歧义,但是现在是接口,只是一种协议,说明子类只是具备某种功能,而这个功能怎么实现,具体需要根据子类的实现来说,这样代码更能够广泛的复用。

总结:这一章节主要讲述了接口的多重实现,以及他的灵活性。

这一章节就到这里,谢谢。

-----------------------------------

目录

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值