码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2015-11-11 16:46:48      阅读:170      评论:0      收藏:0      [点我收藏+]

标签:java

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

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

 

我们先上代码:

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来说都是不合适的,而且代码可能歧义,但是现在是接口,只是一种协议,说明子类只是具备某种功能,而这个功能怎么实现,具体需要根据子类的实现来说,这样代码更能够广泛的复用。

 

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

 

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

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

目录

 

 

 

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

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

标签:java

原文地址:http://blog.csdn.net/raylee2007/article/details/49724327

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!