A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李洪因 中级黑马   /  2013-1-15 20:45  /  1800 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张向辉 于 2013-1-16 10:54 编辑

如何理解java中的多态?

4 个回复

倒序浏览
这样的帖子太多了,LZ直接搜帖子吧
http://bbs.itheima.com/search.ph ... =%E5%A4%9A%E6%80%81
回复 使用道具 举报
多态是由于Java中类的可继承引起的,
Java中的引用变量分编译时类型和运行时类型
例如
Class Fu//定义一个父类
{

}

Class Zi extend Fu//定义一个子类并继承父类操作
{

}

Fu f=Zi z();//这里编译时类型和运行时类型不一致,这种情况就是多态.

上面这种转型只是表明这个引用变量的编译时类型是父类,但是实际执行它的方法时,依然表现出子类对象的行为方式.

评分

参与人数 1黑马币 +9 收起 理由
Rancho_Gump + 9 赞一个!

查看全部评分

回复 使用道具 举报
多态性是java中的三大特征之一,最简单的多态就是涉及到的重载,这个应该好理解,再一个就是方法重写
回复 使用道具 举报
多态是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。因为在程序运行时才确定具体的类,这样,不用修改源程序代码,就可以让引用变量绑定到各种不同的类实现上,从而导致该引用调用的具体方法随之改变,即不修改程序代码就可以改变程序运行时所绑定的具体代码,让程序可以选择多个运行状态
  1. class Demo18
  2. {
  3. public static void main(String[] args)
  4. {
  5. Animal c = new cat();
  6. Animal d = new dog();
  7. AnimalEat(c);
  8. AnimalEat(d);
  9. }

  10. public static void AnimalEat(Animal a)
  11. {
  12. a.eat();
  13. }
  14. }

  15. abstract class Animal
  16. {
  17. abstract void eat();
  18. }

  19. class cat extends Animal
  20. {
  21. void eat()
  22. {
  23. System.out.println("吃鱼");
  24. }
  25. }

  26. class dog extends Animal
  27. {
  28. void eat()
  29. {
  30. System.out.println("吃骨头");
  31. }
  32. }
复制代码

未命名.jpg (1.94 KB, 下载次数: 40)

未命名.jpg

评分

参与人数 1技术分 +1 收起 理由
Rancho_Gump + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马