Java中多态以及向上转型和向下转型
来源:互联网 发布:淘宝店装修怎么弄 编辑:程序博客网 时间:2024/06/05 17:03
多态三种表现形式:
1.重写(override):子类有一个和父类一模一样的方法就构成了重写,可以在子类的这个方法中对父类进行加强
2.重载(overload)
类中有许多个一模一样的方法名,它们的形参的数量或类型不一样,和返回类型没有任何关系,就构成了重载
降低了代码复杂度,有利于代码
拓展
3. 子类可以产生父类对象
一、使用父类类型的引用指向子类的对象;通过将子类对象引用赋值给父类对象引用变量来实现动态方法调用。
二、该引用只能调用父类中定义的方法和变量; 如果要调用子类中独有的方法则需要向下转型(向下转型是危险的,在泛型中运用表较多)
三、如果子类中重写了父类中的一个方法,那么在调用这个方法的时候,将会调用子类中的这个方法;(动态连接、动态调用)
四、变量不能被重写(覆盖),”重写“的概念只针对方法,如果在子类中”重写“了父类中的变量,那么在编译时会报错。
注意:不能把父类对象引用赋给子类对象引用变量 ,
在java里面,向上转型是自动进行的,但是向下转型却不是,需要我们自己定义强制进行。
记住一个很简单又很复杂的规则,一个类型引用只能引用引用类型自身含有的方法和变量。
你可能说这个规则不对的,因为父类引用指向子类对象的时候,最后执行的是子类的方法的。 其实这并不矛盾,那是因为采用了后期绑定,动态运行的时候又根据型别去调用了子类的方法。而假若子类的这个方法在父类中并没有定义,则会出错
你可能说这个规则不对的,因为父类引用指向子类对象的时候,最后执行的是子类的方法的。 其实这并不矛盾,那是因为采用了后期绑定,动态运行的时候又根据型别去调用了子类的方法。而假若子类的这个方法在父类中并没有定义,则会出错
举一个鸡的例子,
鸡是所有其它鸡的基类, 定义了一个方法shape(), 此方法能指明鸡的形态. 所有的子类[火鸡,山鸡,田鸡等],都有这个shape方法, 表明自己的形态,
如果用下面的方法定义我需要具体的鸡,
[基类 引用 = 实现类的对象]
for example:
鸡 a = new 火鸡();
鸡 a = new 田鸡();
鸡 a = new 山鸡();
鸡 a = new 母鸡();
当我使用的时候, 我采用 a 这个引用,
a.shape(), 就会得到鸡的形态.
如果我定义的是
鸡 a = new 火鸡();
那么a.shape得到的是火鸡的形态, 而不需要用具体的
火鸡 a = new 火鸡(); 再通过a.shape得到火鸡的形态
鸡是所有其它鸡的基类, 定义了一个方法shape(), 此方法能指明鸡的形态. 所有的子类[火鸡,山鸡,田鸡等],都有这个shape方法, 表明自己的形态,
如果用下面的方法定义我需要具体的鸡,
[基类 引用 = 实现类的对象]
for example:
鸡 a = new 火鸡();
鸡 a = new 田鸡();
鸡 a = new 山鸡();
鸡 a = new 母鸡();
当我使用的时候, 我采用 a 这个引用,
a.shape(), 就会得到鸡的形态.
如果我定义的是
鸡 a = new 火鸡();
那么a.shape得到的是火鸡的形态, 而不需要用具体的
火鸡 a = new 火鸡(); 再通过a.shape得到火鸡的形态
0 0
- Java中多态以及向上转型和向下转型
- java中多态的实现以及向上转型和向下转型
- 关于Java向上转型和向下转型以及类型还原
- java 向上转型和向下转型
- java 向上转型和向下转型
- Java 向上转型和向下转型
- java向上转型和向下转型
- java中的向上转型和向下转型
- Java中的向上转型和向下转型
- java中的向上转型和向下转型
- java中的向下转型和向上转型
- Java 向上转型和向下转型
- java向上转型和向下转型
- Java的向上转型和向下转型
- java向上转型和向下转型
- Java 向上转型和向下转型
- Java向上转型和向下转型
- java向上转型和向下转型
- 阅读文献的三大问题:坐不住,记不住,想不开
- 面试题14 调整数组顺序使奇数位于偶数前面
- hdu4920 Matrix multiplication [矩阵乘法 压位 ]
- 项目clean之后,R.java不见了
- 微新余微信号ivxinyu新余农村户口多值钱?@一张表告诉你(农民的逆袭)!
- Java中多态以及向上转型和向下转型
- java+poi实现word转html显示
- jsp学习之路之实现一个用户信息页面并实现跳转到另外一个页面输出用户的相关信息
- Search Insert Position
- 最小中值平方估计
- Linux设备驱动程序-调试技术
- 用opengl方式打开unity
- sql查出表的各个字段的所有属性
- 程序入口-UIApplicationMain详解