黑马程序员 多态和多态的应用

------- android培训java培训、期待与您交流! -------------------------------- 

一、多态在生活中的体现

生活中的多态,就是一个事物,具备的多种形态

比如说,我在公司上班的时候,我就是一个打工仔

我下班了去上夜校,那我就是一个学生

我下课去买瓶水,那我就是消费者

回家了,那我就是家庭一员...

二、对象的多态性

我们可以通过一个小案例来解释

儿子继承了父亲,那父亲的资源儿子当然可以拿来用
反过来,不同儿子的财产父亲也都可以使用,这不就是多态吗?(这是向上转型)
假如还一种情况,儿子的私房钱,如果父亲要用就要和儿子商量,这就是强制对象转换也叫向下转型,然后就可以调用儿子的特殊方法(私房钱)

、多态的前提

要实现多态,前提是需要继承

那继承和多态的区别就出来了:
继承感觉是子类调用共有的父类资源的过程是继承吗? 这是从子类到父类
从父类实现子类不同的方法过程是多态吗? 这是从父类到子类

  A. 父类或者接口指向自己的子类对象
     Fu f = new Zi();  
千万不要写 Zi zi = new Fu();
  B. 调用方法的时候,运行的是子类重写后的方法
  C. 调用成员变量的时候,运行的是父类的成员变量
 
D. 在多态中,只能调用子类父类共有方法,不能调用子类的特有方法!!多态的弊端
  E. 调用子类特有方法,必须进行类型的强制转换,将提升为父类类型的子类对象,转回子类的类型,手动!!
  F. 保证程序的安全性,避免发生类型转换异常ClassCastException,采用instancof运算符,进行健壮性判断
     变量 instanceof 类名 如果是返回真    类 instanceof 变量--语法错误

、多态中的实现的细节,很重要很重要
  多态中的成员变量:
      编译时期,如果父类中定义了这个成员变量,编译成功,否则编译失败
运行时期,运行父类中定义的成员变量
 
  多态中的静态成员变量:
      编译时期,如果父类中定义了这个成员变量,编译成功,否则编译失败
 运行时期,运行父类中定义的成员变量
 
  多态中的非静态成员方法:
      编译时期,如果父类中定义了这个成员方法,编译成功,否则编译失败
 运行时期,运行子类重写后的方法
 
  多态中的静态成员方法:
      编译时期,如果父类中定义了这个成员方法,编译成功,否则编译失败
 运行时期,运行父类中定义的成员方法
  
  小规律:
    除了非静态的成员方法以外,编译运行都看父类
只有非静态的成员方法,编译看父类,运行看子类

非静态的成员方法,编译看左边,运行看右边
其他情况,编译运行全看左边


ASP.Net+Unity开发.Net培训、期待与您交流! ---------------------- 详细请查看:www.itheima.com

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值