Java面向接口编程与多态的示例学习

论坛 期权论坛 脚本     
匿名网站用户   2020-12-21 09:34   11   0

首先假设一个场景,比如我们是卖手机的,如果顾客来了挑选手机,需要一个个拿不同型号的手机去演示功能

为了简便,我们可以制作一个接口,在接口一端连接手机,另一端控制演示手机的各个功能

手机都有发短信、打电话两个基本功能,我们可以将接口设置为这两个功能

public interface Cellphone
{
 public void phone(long num);

 public void sms(long num, String content);
}


下面的一般手机都可以使用这个接口

public class Nokia implements Cellphone
{
 @Override
 public void phone(long number)
 {
  Util.print("nokia phone");
 }

 @Override
 public void sms(long number, String content)
 {
  Util.print("nokia sms");
 }
}

public class BlackBerry implements Cellphone
{
 @Override
 public void phone(long number)
 {
  Util.print("BlackBerry phone");
 }

 @Override
 public void sms(long number, String content)
 {
  Util.print("BlackBerry sms");
 }
}


Iphone上还可以玩玩游戏

public class Iphone implements Cellphone
{
 @Override
 public void phone(long num)
 {
  Util.print("Iphone phone");
 }

 @Override
 public void sms(long num, String content)
 {
  Util.print("Iphone sms");
 }
 
 public void play()
 {
  Util.print("Iphone play");
 }
}


那么,我们在操作的时候就可以通过接口来演示手机功能

Cellphone cell = new Nokia();
cell.phone(250);


这时,顾客还希望我们演示一下山寨机,可是接口不匹配,怎么办,我们需要制作一个适配器来转换一下

public class Shanzhaiji
{
 public void dadianhua()
 {
  Util.print("shanzhaiji dadianhua jiushiniu");
 }
 
 public void faduanxin()
 {
  Util.print("shanzhaiji faduanxin jiushiniu");
 }
}


public class ShanzhaiAdapter implements Cellphone
{
 private Shanzhaiji shanzhai;

 public ShanzhaiAdapter(Shanzhaiji shanzhai)
 {
  this.shanzhai = shanzhai;
 }

 @Override
 public void phone(long num)
 {
  shanzhai.dadianhua();
 }

 @Override
 public void sms(long num, String content)
 {
  shanzhai.faduanxin();
 }
}


通过接口转换,我们也可以演示山寨机了

ShanzhaiAdapter adapter = new ShanzhaiAdapter(new Shanzhaiji());
adapter.phone(0);



分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:1136255
帖子:227251
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP