java用两个例子充分阐述多态的可拓展性介绍

所属分类: 软件编程 / java 阅读数: 37
收藏 0 赞 0 分享

下面我将以两个例子来充分阐述java中多态的可拓展性,作为一名优秀的程序员,就必须了解程序的可拓展性,非常利于程序后续的开发。

第一个例子:

利用电脑的主板来作为例子,就我们所熟悉的电脑的主板,里面是不是有很多模块,网卡,声卡,想要用到这些功能,只能当主板运行起来,再给网卡和声卡供电就可以,但这用软件语言怎么来实现呢?是不是先要主板跑起来,主板再让声卡或者网卡跑起来,但这样做,拓展性不高让声卡和网卡跑起来的操作是重复的,而且有很多模块也具备这样的功能,就单纯让主板上的模块跑起来,这是其一,万一,那一天,技术更新,新的模块出现了,是不是又要创建模块的对象,然后又跑起来,这显然是不利于开发的,但是针对这一个问题,主板的厂商和声卡,网卡的厂商商量后,以后就用一个PCI接口来连接主板和模块,彻底解决了更新不能用或者重复使用的问题,而这恰恰对应了我们的java中的多态,利用多态,我们能大大提高程序的可拓展性!

具体代码如下!

 /*
需求:
电脑运行实例,
电脑运行基于主板。
*/


interface PCI
{
  public void open();
  public void close();
}

class MainBoard
{
  public void run()
  {
    System.out.println("mainboard run ");
  }
  public void usePCI(PCI p)//PCI p = new NetCard()//接口型引用指向自己的子类对象。
  {
    if(p!=null)
    {
      p.open();
      p.close();
      
    }
  }
}


class NetCard implements PCI
{
  public void open()
  {
    System.out.println("netcard open");
  }
  public void close()
  {
    System.out.println("netcard close");
    method();
  }
  
}
class SoundCard implements PCI
{
  public void open()
  {
    System.out.println("SoundCard open");
  }
  public void close()
  {
    System.out.println("SoundCard close");
  }
}
/*
class MainBoard
{
  public void run()
  {
    System.out.println("mainboard run");
  }
  public void useNetCard(NetCard c)
  {
    c.open();
    c.close();
  }
}

class NetCard
{
  public void open()
  {
    System.out.println("netcard open");
  }
  public void close()
  {
    System.out.println("netcard close");
  }
}
*/

class DuoTaiDemo5 
{
  public static void main(String[] args) 
  {
    MainBoard mb = new MainBoard();
    mb.run();
    mb.usePCI(null);
    mb.usePCI(new NetCard());
    mb.usePCI(new SoundCard());
    
  }
}

第二个例子:

利用常用数据库来解释多态,就我们熟知的数据库而言,目前有两种数据库的连接模式:JDBC和Hibernatelian连接,使用数据库,都有两个必不可少的操作,连接和关闭,这时候,使用接口,把这两种操作封装起来,需要使用那种连接模式直接更换类名就可以了!

具体代码如下!

/*
需求:数据库的操作。
数据是:用户信息。
1,连接数据库。JDBC Hibernate
2,操作数据库。
  c create r read u update d delete
3,关闭数据库连接。
*/

interface UserInfoDao
{
  public void add(User user);

  public void delete(User user);
}

class UserInfoByJDBC implements UserInofDao
{

  public void add(User user)
  {
    1,JDBC连接数据库。;
    2,使用sql添加语句添加数据。;
    3,关闭连接。
  }
  public void delete(User user)
  {
    1,JDBC连接数据库。;
    2,使用sql添加语句删除数据。;
    3,关闭连接。
  }
}

class UserInfoByHibernate implements UserInfoDao
{
  public void add(User user)
  {
    1,Hibernate连接数据库。;
    2,使用sql添加语句添加数据。;
    3,关闭连接。
  }
  public void delete(User user)
  {
    1,Hibernate连接数据库。;
    2,使用sql添加语句删除数据。;
    3,关闭连接。
  }
}

class DBOperate
{
  public static void main(String[] args) 
  {
    //UserInfoByJDBC ui = new UserInfoByJDBC();
//    UserInfoByHibernate ui = new UserInfoByHibernate();
    UserInfoDao ui = new UserInfoByHibernate();
    ui.add(user);
    ui.delete(user);
  }
}

总结:

1. 这两个例子都使用了接口来抽象出一些重复的操作,为了让不同的模块能直接快捷地使用这些操作,直接使用多态的向上转型(看我之前的博客),能后用父类引用去调用,反正之后无论是技术更新而有了新的模块或者更换已有模块,我们都可以使用父类的引用去直接调用它们共同的操作!

2. 不一定用接口,也可以使用抽象类,但是,使用接口,可拓展性更高,以后有更新,可以直接改动接口,不用去改动抽象类,其次,使用接口,能够被多继承!这也是方便的地方。

以上这篇java用两个例子充分阐述多态的可拓展性介绍就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

更多精彩内容其他人还在看

Springmvc restful配置遇到的小坑

本文是小编给大家带了的Springmvc restful配置遇到的小小坑,小编给大家带来了问题原因及解决办法,非常不错,具有参考借鉴价值,感兴趣的朋友一起看下吧
收藏 0 赞 0 分享

Java中的匿名内部类小结

java内部类分为: 成员内部类、静态嵌套类、方法内部类、匿名内部类。这篇文章主要介绍了Java中的匿名内部类的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

Java的云打印Lodop

这篇文章主要介绍了Java的云打印Lodop 的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

Java线程池框架核心代码解析

这篇文章主要针对Java线程池框架核心代码进行详细解析,分析Java线程池框架的实现ThreadPoolExecutor,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Java 交换两个变量的数值实现方法

下面小编就为大家带来一篇Java 交换两个变量的数值实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

全面了解JAVA_BaseDAO数据处理类

下面小编就为大家带来一篇全面了解JAVA_BaseDAO数据处理类。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

java、python、JavaScript以及jquery循环语句的区别

本篇文章主要介绍java、python、JavaScript以及jquery的循环语句的区别,这里整理了它们循环语句语法跟示例,以便大家阅读,更好的区分它们的不同
收藏 0 赞 0 分享

基于JDBC封装的BaseDao(实例代码)

下面小编就为大家带来一篇基于JDBC封装的BaseDao(实例代码)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

简单通用JDBC辅助类封装(实例)

下面小编就为大家带来一篇简单通用JDBC辅助类封装(实例)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

浅谈java线程中生产者与消费者的问题

下面小编就为大家带来一篇浅谈java线程中生产者与消费者的问题。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享
查看更多