黑马程序员_多态

——————————   ASP.Net+Android+IOS开发 .Net培训 、期待与您交流! ——————————
一、使用父类类型的引用指向子类的对象; 
二、该引用只能调用父类中定义的成员; 
三、如果子类中重写了父类中的一个非私有非静态的方法,那么在调用这个方法的时候,将会调用子类中的这个方法
四、变量不能被重写(覆盖),"重写"的概念只针对方法

“实例方法被覆盖,静态方法和任何成员变量都被隐藏”
总结:父类引用指向子类对象,此时只能访问父类中已有的成员,并且只有非静态方法在访问时用的是子类的实现
静态方法不能覆盖非静态方法

子类和父类中存在同名变量时,子父类中变量同时存在,子类可以访问父类中的变量

void max(int a)
void max(short a)
max(4)//是重载,但调用的是max(int a)

子类覆盖父类方法要遵循“两同两小一大”


“两同”即方法名相同,形参列表相同。:如果参数列表不相同的话,就不是重写了,而是重载继承的父类方法了。即使参数类型是父子关系。

“两小”指的是子类方法返回值类型应比父类方法返回值类型更小或相等,子类方法声明抛出的异常类应比父类方法声明抛出的异常类更小或相等 

“一大”指的是子类方法的访问权限应比父类方法的访问权限更大或相等。

注意:覆盖方法和被覆盖方法要么都是类方法,要么都是实例方法,不能一个是类方法一个是实例方法,否则编译出错。



在多态中成员的特点
在编译时期:参阅引用型变量所属的类中是否有调用的成员。如果有,编译通过,如果没有编译失败。
在运行时期:参阅对象所属的类中是否有调用的方法。
简单总结就是:成员函数在多态调用时,编译看左边,运行看右边。
在多态中成员变量的特点:
无论编译和运行,都参考左边(引用型变量所属类)。
在多态中,静态函数的特点:同成员变量


Animal c = new cat();
多态:可以理解为事物存在的多种体现形态。
多态的体现:父类的引用指向了自己的子类对象。父类的引用也可以接受自己的子类对象
多态的好处:多态的出现大大的提高了程序的扩展性
多态的前提:存在方法覆盖.必需是类与类之间有关系,要么继承,要么实现
多态的弊端:提高了扩展性,但是只能使用父类的引用访问父类中的成员

注意 ,多态可以在构造时出现,子类覆盖父类方法,父类构造时会调用该方法

—————————— ASP.Net+Android+IOS开发.Net培训、期待与您交流!——————————

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值