[讨论]实力验证-你知道什么是多型吗?_Android, Python及开发编程讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Android, Python及开发编程讨论区 »
总帖数
3
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 1908 | 回复: 2   主题: [讨论]实力验证-你知道什么是多型吗?        下一篇 
谁注册了我的号
注册用户
等级:上尉
经验:574
发帖:6
精华:0
注册:2015-9-25
状态:离线
发送短消息息给谁注册了我的号 加好友    发送短消息息给谁注册了我的号 发消息
发表于: IP:您无权察看 2015-10-23 12:04:07 | [全部帖] [楼主帖] 楼主

什么是多型呢?简单来说,是一个类别(或介面),设定了一些资料及函数(没有实做),而由其他类别所继承,并且在该类别实做。

 

举个例子来说,我们现在假设除了我们这个世界之外还许多平行宇宙,里面的人、事、物都跟我们这边一样,但是本身而言是不一样的。这些宇宙中的browser本身都是browser,有着browser的脸、browser的身体、browser的脑袋,我们可以说browser本身是一个介面。但是,继承这个介面的类别里将这些东西所实做的不一样,例如这个宇宙的browser的脑袋被实做成是喜爱Java的工程师,而在另一个宇宙则是被实做成喜爱C#.net的家伙,而在另一个宇宙,是被实做成大明星。

import java.lang.*;
 
  public class example1 {
    public static void main(String start[]){
    browser tW = new thisWorld();
    browser tW1 = new thatWorld1();  
    browser tW2 = new thatWorld2();
    tW.mind();
    tW1.mind();
    tW2.mind();
    System.exit(0);
    }
    
  }
  
    interface browser {
    public void mind();  
  
  } 
    
    
  class thisWorld implements browser {
    public void mind() {
    System.out.println("这个时空中(thisWorld),browser是個热爱Java的工程師");  
    }
 
}
 
  class thatWorld1 implements browser {
    public void mind() {
    System.out.println("这个时空中(thatWorld1),browser是个拥护C#.net的邪恶工程師");  
    }
 
}
    class thatWorld2 implements browser {
    public void mind() {
    System.out.println("这个时空中(thatWorld2),browser是个大明星");

多型有什么好处呢?例如:Java中的I/O APIs,里头的OutputStream便是一个典范,OutputStream的子类别都拥有OutputStream的函数,但是实做出来的却不同,像是FileOutputStreamwrite()函数设定为可以写入File的函数,而ZipOutputStream则是可以写入Zip压缩档案。也就是说,多型可以让处理同一类资料的类别拥有相同的函数,但是每个类别所实做出来的相同函数的功能不一定相同。

备注:根据Duncan先进的说明,其实IO APIs不止用到多型,还用到了Decorator pattern,详细细节请见底下Duncan先进的说明。 

如果想要让你的子类别拥有相同的函数(包含相同的功能)的话,要使用类别继承,而不是继承介面。 





赞(0)    操作        顶端 
一个路过的
版主
等级:中校
经验:1970
发帖:34
精华:2
注册:2015-9-2
状态:离线
发送短消息息给一个路过的 加好友    发送短消息息给一个路过的 发消息
发表于: IP:您无权察看 2015-10-23 12:09:38 | [全部帖] [楼主帖] 2  楼

我觉得 polymorphism 有个我个人觉得重要的要点,你似乎没有提到(可能是多型在 Java 是常态,反而比较不引人注意)另外,input/output stream hierarchy 的确可用来说明多型,但是其设计本身还含有 Decorator pattern 的味道,这才是其妙处。 




赞(0)    操作        顶端 
谁注册了我的号
注册用户
等级:上尉
经验:574
发帖:6
精华:0
注册:2015-9-25
状态:离线
发送短消息息给谁注册了我的号 加好友    发送短消息息给谁注册了我的号 发消息
发表于: IP:您无权察看 2015-10-23 12:18:32 | [全部帖] [楼主帖] 3  楼

我觉得 polymorphism&nb.....

不过还是不了大哥在说什么

资质太浅了  




赞(0)    操作        顶端 
总帖数
3
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论