初学java多态(2)

 首先我们有这样几个类,电脑,个人电脑,笔记本电脑。

java 代码

 

  1. class Computer{   
  2.        
  3.     public void turnOn(){   
  4.     }   
  5. }  

现在有了电脑这个类,那么个人PC,笔记本都是继承他。

java 代码
  1. class PC extends Computer{   
  2.     public void turnOn(){   
  3.         System.out.println("PC has turn on");   
  4.     }   
  5. }   
  6.   
  7. class NB extends Computer{   
  8.     public void turnOn(){   
  9.         System.out.println("NB has turn on");   
  10.     }   
  11. }  

我们看到,每个类都有一个 turnOn()方法,而在父类中这个方法是空的,子类中各自有不同的实现,到这里可能还不太明显。如果有另外一个方法,要接受这些类作为参数,就像这样

java 代码
  1. class Test{   
  2.     public void go(Computer computer){   
  3.          computer.turnOn();   
  4.     }   
  5. }  

这个方法接收的是基类参数,当然我们是可以把子类传递给方法的,也应该这么做。

java 代码
  1. go(new PC());   
  2. go(new NB());  

这样他就会去调用具体子类的turnOn()方法,所以这两次调用的输出是不一样的.如果不用基类作为参数,我们想调用每个子类的turnOn()方法,那么就要些两个方法体一样的go()而接收不同的参数的重载。

java 代码
  1. public void go(PC computer){      
  2.          computer.turnOn();      
  3.     }     
  4.   
  5. public void go(NB computer){      
  6.          computer.turnOn();      
  7.     }    

这样些也是正确的,但是这样会产生很多重复代码,而且也不易维护,当然这只是多态中最基本的一个部分,Java多态机制还有很多特性,关于这些建议大家看看 java编程思想(think in java)这本书,里面讲的很详细,这里只是很简单的描述了一下,还望个各位高手不要见笑。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值