继承--多态

举报
brucexiaogui 发表于 2021/12/30 01:11:13 2021/12/30
【摘要】 继承--多态 一、多态特征     1、编译时的类型由申明该变量时使用的类型决定,运行时的类型由实际赋给变量的对象类型决定。     2、如果编译类型和运行类型不同,就出现了多态。     3、多态例子:Person p = new Student(); 二、实现多态...

继承--多态

一、多态特征

    1、编译时的类型由申明该变量时使用的类型决定,运行时的类型由实际赋给变量的对象类型决定。

    2、如果编译类型和运行类型不同,就出现了多态。

    3、多态例子:Person p = new Student();

二、实现多态条件

    继承是多态实现的前提条件

    父类的引用变量可以指向子类的实例对象,而程序调用的方法在运行期才动态绑定,就是引用变量所指向的真正实例对象的方法,也就是内存里正在运行的那个对象的方法,而不是引用变量的类型中定义的方法

 

三、多态作用

    把不同的子类对象都当作父类来看,可以屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,以适应需求的不断变化。

四、引用类型转换

    向上转型(子类→父类):(自动完成)

父类名称 父类对象 = 子类实例 ;

 

    向下转型(父类→子类):(强制完成)

子类名称 子类对象 = (子类名称)父类实例 ;

五、注意事项

    1、在多态环境中,编译类型的变量不能调用实际类型的类里的方法,只能调用编译型的类里的方法。


  
  1. Car c = new HM();//多态
  2. //c.hmXUANFU();//调用不到,c调用不到c实际类型里的方法

 

    2、在多态环境中,若调用的方法是子类覆写过来的,那么父类变量调用的时候,实际调用是子类覆写的方法。

 


  
  1. Car c = new HM();//多态
  2. /*
  3. 若多态调用的方法是子类覆写过来的,
  4. 那么父类变量调用的时候,实际上调用的是 子类的方法;
  5. */
  6. c.show();//show到底是谁的?

 

六、多态实例

 


  
  1. class Car
  2. {
  3. public void show()
  4. {
  5. System.out.println("我是一般的车");
  6. }
  7. }
  8. class HM extends Car
  9. {
  10. //覆写
  11. public void show()
  12. {
  13. System.out.println("我是悍马车");
  14. }
  15. public void hmXUANFU()
  16. {
  17. System.out.println("我在炫富");
  18. }
  19. }
  20. class Demo
  21. {
  22. public static void main(String[] args)
  23. {
  24. Car c = new HM();//多态
  25. /*
  26. 若多态调用的方法是子类覆写过来的,
  27. 那么父类变量调用的时候,实际上调用的是 子类的方法;
  28. */
  29. c.show();//show到底是谁的?
  30. //c.hmXUANFU();//调用不到,c调用不到c实际类型里的方法
  31. if(c instanceof HM)//检验是不是悍马
  32. {
  33. HM h =(HM)c;
  34. h.hmXUANFU();
  35. }
  36. }
  37. }

 

 

 

文章来源: brucelong.blog.csdn.net,作者:Bruce小鬼,版权归原作者所有,如需转载,请联系作者。

原文链接:brucelong.blog.csdn.net/article/details/79397104

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。