您的位置:首页 > 编程语言 > Java开发

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

2015-11-08 23:16 405 查看
这一章节我们来说一下接口另一个特性:多重接口。
在平常,使用继承,我们只是继承某一类,只能够一种向上转型,但是在接口的使用方面,可以实现多个接口,然后实现多种的向上转型。
 
我们先上代码: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