接下来跟初学Java的同学一起来领会一下Java里面接口的概念和应用。
你确实已经在用接口了,最典型的比如Swing里面的监听。回头想想,是不是?
接口,interface,从中文的翻译上来说,接口的意思就是两个系统之间的联系。
所以如果想要理解接口,你必须先搞清楚两个系统之间会有什么样的联系呢?怎么联系呢?
我们举例说明:
比如一个大牌导演,现在要组织一台晚会,这个大牌导演最擅长的就是大场面、大制作,演员无所为,他把谁放进去,谁准大红大紫。但是也不是没有任何标准,抓一个人就用,导演列出了他要使用的演员的标准:能说好台词;好,就这个标准,普天之下,谁符合标准谁就可以拿来用了。
导演和演员是有关系的,导演需要支配演员。
我们看具体的演员和一个具体的导演。
演员类:
package net.qingsoft.example;
public class Player {
public void say(String message)
{
System.out.println("表演台词:---"+message+"---");
}
}
导演类:
package net.qingsoft.example;
public class Director {
public void perform(Player player)
{
System.out.println("演出马上开始...");
player.say("万码学堂探秘Java");
System.out.println("演出现在结束...");
}
}
大家已经看到了,导演中的perform方法会用到演员Player;
我们测试一下:
package net.qingsoft.example;
public class Test {
public static void main(String[] args) {
Player player = new Player();
Director director = new Director();
director.perform(player);
}
}
结果:
演出马上开始...
表演台词:---万码学堂探秘Java---
演出现在结束...
没错,就是这个结果。
现在呢有个机器人,很厉害,也可以说台词。
package net.qingsoft.example;
public class Robot {
public void say(String message)
{
System.out.println("我是机器人,我说台词:==="+message+"===");
}
}
那么这个机器人能否提供给导演来用呢?
也就是能否这样用呢?
Robot Robot = new Robot();
Director director = new Director();
director.perform(player);
别听我说,你最好现在就实验一下。看到了吧,不行。为什么呢?因为perform方法要的是Player,很明显,Robot和Player没有任何关系。我要的是馒头,你给我了一把剪刀,这个不行。
你想到了,让perform方法能使用Robot不就行了么,对我们可以重载。
修改一下Director类,重载perform方法
package net.qingsoft.example;
public class Director {
public void perform(Player player)
{
System.out.println("演出马上开始...");
player.say("万码学堂探秘Java");
System.out.println("演出现在结束...");
}
public void perform(Robot robot)
{
System.out.println("演出马上开始...");
robot.say("万码学堂探秘Java");
System.out.println("演出现在结束...");
&nb