当前位置: 首页 > 编程笔记 >

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

黎曾笑
2023-03-14
本文向大家介绍java用两个例子充分阐述多态的可拓展性介绍,包括了java用两个例子充分阐述多态的可拓展性介绍的使用技巧和注意事项,需要的朋友参考一下

下面我将以两个例子来充分阐述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用两个例子充分阐述多态的可拓展性介绍就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小牛知识库。

 类似资料:
  • 问题内容: 任何人都可以给我一个现实的多态性实例吗?我的教授跟我讲了我一直听到的关于操作员的古老故事。和,所以这是多态性。我确实不能将这样的定义与自己联系起来,因为我已经阅读并重新阅读了许多书籍。 我需要的是一个真实的示例代码,我可以将其与之真正关联。 例如,这是一个小示例,以防万一您想扩展它。 问题答案: 查看Wikipedia示例:从高层次上讲,它非常有用: 请注意以下几点:所有动物都在“说话

  • 可靠的扩展 目前开源社区有不少人为Sanic框架编写了插件,这些插件很可能会在将来的某个时间帮助到你,比如缓存、模板渲染、api文档生成、Session...等等 官方也维护了一个扩展列表,见extensions

  • 本文向大家介绍阐述一下阐述Servlet和CGI的区别?相关面试题,主要包含被问及阐述一下阐述Servlet和CGI的区别?时的应答技巧和注意事项,需要的朋友参考一下 考察点:servlet   Servlet与CGI的区别在于Servlet处于服务器进程中,它通过多线程方式运行其service()方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成

  • 本文向大家介绍Java中的多态用法实例分析,包括了Java中的多态用法实例分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Java中的多态用法。分享给大家供大家参考。具体分析如下: 多态,是面向对象的程序设计语言最核心的特征。封装性、继承性都比较简单,所以这里只对多态做一个小小的笔记。。。 1、什么是多态? 多态意味着一个对象可以多重特征,可以在特定的情况下,表现出不同的状态,从而应对

  • 本文向大家介绍阐述ArrayList、Vector、LinkedList的存储性能和特性相关面试题,主要包含被问及阐述ArrayList、Vector、LinkedList的存储性能和特性时的应答技巧和注意事项,需要的朋友参考一下 考察点:ArrayList ArrayList 和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,

  • 多态性是面向对象编程的又一个重要特征,它是指在父类中定义的属性和方法被子类继承之后,可以具有不同的数据类型或表现出不同的行为,这使得同一个属性或方法在父类及其各个子类中具有不同的含义。 对面向对象来说,多态分为编译时多态和运行时多态。其中编译时多态是静态的,主要是指方法的重载,它是根据参数列表的不同来区分不同的方法。通过编译之后会变成两个不同的方法,在运行时谈不上多态。而运行时多态是动态的,它是通